2015-02-11 5 views
1

Я уверен, что есть простое решение, но у меня возникают проблемы с ошибкой для «незаконного смещения строки» при обработке ввода формы для использования с Laravel Mail: :Отправить().Laravel Mail :: send() незаконно offet 'name'

Это код, обрабатывающий ввод формы, так как он должен быть массивом.

$msg = array(
    'name'=>Input::get('name'), 
    'email'=>Input::get('email'), 
    'message'=>Input::get('message') 
); 

Затем я пытаюсь отправить его через Mail :: send().

Mail::send('emails.question', $msg, function($message) { 
    $message->to('[email protected]')->subject('Email from your website!'); 
}); 

Шаблон приложения/views/emails/question.blade.php чрезвычайно прост.

{{ $msg['name'] }} <br/> 
{{ $msg['email'] }} <br/> 
{{ $msg['message'] }} 

Однако я все еще получаю следующее сообщение об ошибке.

ErrorException (E_UNKNOWN) 
Illegal string offset 'name' (View: 
[intentionally omitted for privacy]/app/views/emails/question.blade.php) 

Я считаю, что ошибка имеет в виду $ сообщ [ «имя»] не присутствующей, но если я вернусь вид вместо этого я не получаю сообщение об ошибке на всех.

return View::make('emails.questions')->with('msg',$msg); 

Что мне не хватает?

ответ

1

Вы прошли $msg в качестве ассоциативного массива, поэтому предметы из массива $msg доступны для просмотра по $key. Это означает, что в вашем случае, например, $name, $email и так далее. Приложение/views/emails/question.blade.php теперь будет таким:

{{ $name }} <br/> 
{{ $email }} <br/> 
{{ $message }} 
+0

Это сработало отлично! Я знал, что это что-то простое, вы рок! – Azeame

+0

Вас приветствуют – bdtiger