web-dev-qa-db-ja.com

laravelでメールを送信するが、変数を認識しない

Laravel経由でメールを送信しようとしていますが、このエラーが発生しています。

未定義の変数:contactEmail

上で定義されていても。ここで何が問題になっていますか?

コントローラー

$contactName = Input::get('name');
$contactEmail = Input::get('email');
$contactMessage = Input::get('message');

$data = array('name'=>$contactName, 'email'=>$contactEmail, 'message'=>$contactMessage);
Mail::send('template.mail', $data, function($message)
{   
    $message->from($contactEmail, $contactName);
    $message->to('[email protected]', 'myName')->subject('Mail via aallouch.com');
});

編集:

template.mail

Name: {{$name}}
Email: {{$email}}
Message:{{$message}}
27
mXX

$ data変数は次のように定義されているため:

$data = array(
    'name'=>$contactName, 
    'email'=>$contactEmail, 
    'message'=>$contactMessage
);

ビューで使用可能な$ dataはありませんが、直接使用できます:

{{ $name }}
{{ $email }}
{{ $message }}

編集:

また、コントローラーには次のものが必要です。

    $contactName = Input::get('name');
    $contactEmail = Input::get('email');
    $contactMessage = Input::get('message');

    $data = array('name'=>$contactName, 'email'=>$contactEmail, 'message'=>$contactMessage);
    Mail::send('template.mail', $data, function($message) use ($contactEmail, $contactName)
    {   
        $message->from($contactEmail, $contactName);
        $message->to('[email protected]', 'myName')->subject('Mail via aallouch.com');
    });

を使用して変数をクロージャに渡す必要があります

use ($contactEmail, $contactName)

上記のように。

このエラーが発生し、解決しました。 $messageキーワードと$comment from $ data。

以下の例:

$data = array('name' => 'vikas', 'message' => 'test message');

見る

{{ $name }}
{{ $message }}

エラーが発生しています

$data = array('name' => 'vikas', 'comment' => 'test message');

{{ $name }}
{{ $comment }}

今では問題なく動作しています。

4
Vikas Burman

ソースコード を見ると、次の行が表示されます。

 $data['message'] = $message = $this->createMessage();

したがって、messageフィールドはその行で上書きされます。 textcommentなど、フィールドには他の名前を使用します。

0
mixel