PHP Warning: htmlspecialchars() expects parameter 1 to be stringの対処法
今回はLaravelで
1 |
Facade/Ignition/Exceptions/ViewException with message 'PHP Warning: htmlspecialchars() expects parameter 1 to be string, object given in /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php on line 251 |
が起きたときの対処法についてご紹介いたします。
PHP Warning: htmlspecialchars() expects parameter 1 to be stringの対処法
結論を言うと、カッコの中でカッコの外と同じ値を使って、それをblade.phpに渡していることにより、このエラーが起こるようです。
ここのstackoverflowと全く同じ事象でした。
https://stackoverflow.com/questions/59590448/i-have-problem-but-can-t-find-a-solution-for-2-days-laravel-email
言葉だと分かりにくいので例を挙げると、私は次のコードでエラーが起きていました。
LaravelでMailファサードを使ったメール送信をしようとしていたときのことです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php namespace App\Http\Controllers\Web; use App\Http\Controllers\Controller; // Mailファサードをインポート. use Illuminate\Support\Facades\Mail; class MailController extends Controller { // メールを送信するメソッド. public function sendMail() { // Mail::sendで送信できる. // 第1引数はテンプレートファイルのパスを指定 // 第2引数はテンプレートファイルで使うデータを指定 Mail::send('emails.send_test', [ "message" => "メール送信テスト" ], function($message) { // 第3引数にはコールバック関数を指定 // その中で、送信先やタイトルの指定を行う. $message ->to('to@sample.com') ->bcc('bcc@sample.com') ->subject("testSubject"); }); } } |
1 2 3 |
ご登録ありがとうございます。<br> <br> メッセージ:{{ $message }} |
これだと下記のエラーが起こります。
1 |
Facade/Ignition/Exceptions/ViewException with message 'PHP Warning: htmlspecialchars() expects parameter 1 to be string, object given in /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php on line 251 (View: /var/www/html/resources/views/emails/send_test.blade.php)' |
下記の記事に書きましたが、カッコの前のmessageのところをtestに変えて、blade.phpの出力をmessageではなくtestに変えたらうまくいきました。
そのサンプルコードは下記に掲載しております。
LaravelでMailファサードを使ったメール送信サンプルコード
同じような事象に直面してハマっている方はコードを見比べてみてください。
終わりに
今回はLaravelで表題のエラーが起きたときの対処法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません