Подтвердить что ты не робот

Отправка электронной почты с помощью laravel, но не распознающая переменную

Я пытаюсь отправить электронное письмо через Laravel, но я получаю эту ошибку:

Undefined variable: 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');
});

EDIT:

template.mail

Name: {{$name}}
Email: {{$email}}
Message:{{$message}}
4b9b3361

Ответ 1

Как ваша переменная $data определяется как:

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

У вас не будет доступных $данных в вашем представлении, но вы можете использовать напрямую:

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

EDIT:

И ваш контроллер должен иметь:

    $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)

Как показано выше.

Ответ 2

У меня есть эта ошибка, и я решил ее. Я заменил $message ключевое слово $comment на $data.

Пример ниже:

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

view

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

Ошибка при получении

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

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

Теперь он работает нормально.