はじめに
Laravelのメール送信で、こんな感じのエスケープ関連のエラーメッセージが出た時の対処です。
Laravel htmlspecialchars() expects parameter 1 to be string, object given in my project?
問題のコード
■ コントローラー
Mail::send(
['text' => 'emails.hello'],
['message' => 'こんにちは!'],
function($message) use ($from_email, $mail_subject, $to_email ) {
$message->from( $from_email );
$message->to( $to_email );
$message->subject( $mail_subject );
});
■ emails.hello.blade.php
{{ $message }}
一体どこが悪いのだろう …
解決
原因判明。
原因は、メール本文に渡すパラメータのキー名が「message」だったのがダメだったらしい。
試しにキーを「message」→ 「messages」に変えたところ、正常にメールが送信された!
■ コントローラー
Mail::send(
['text' => 'emails.hello'],
['messages' => 'こんにちは!'],
function($message) use ($from_email, $mail_subject, $to_email ) {
$message->from( $from_email );
$message->to( $to_email );
$message->subject( $mail_subject );
});
■ emails.hello.blade.php
{{ $messages }}
Laravel? blade?の仕組み上、「message」というのは特殊なキー扱いになっているのかもしれない。
0 件のコメント:
コメントを投稿