Отправка электронной почты с помощью 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}}
Ответы
Ответ 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 }}
Теперь он работает нормально.