1. ホーム
  2. php

[解決済み] Laravel Bladeが@includeで文字列を含む変数を渡すとエラーになる。

2023-05-14 05:02:38

質問

Laravel5.0.27で、変数と以下のコードでビューをインクルードしています。

@include('layouts.article', [
        'mainTitle' => "404, page not found",
        'mainContent' => "sorry, but the requested page does not exist :("
    ])

と表示され、以下のようなエラーが発生します...

FatalErrorException 構文 ... エラー、予期しない ',' が発生しました。

エラーは "mainContent" の変数文字列の "(") のみによるものと絞り込み、"(") を削除するとエラーが消えてすべて正常に実行されるようになりました。これに関するドキュメントには何も書かれていませんし、オンラインに記載されている同様のエラーも見当たりません。

これが期待される動作なのか、それとも報告されるべきバグなのか、誰か知っていますか?

お時間をいただき、本当にありがとうございました。

どのように解決するのですか?

バグではなく、正規表現によるブレード構文の制限です。解決方法は github :

<ブロッククオート

問題は、複数行の使用です。1 行で使用できるのは 構文が [正規表現によって] 制限されているため、Blade で [変数を渡す] には 1 行しか使用できません。 式によって]制限されるためです。

以下のコードを試せば、問題ないでしょう。

@include('layouts.article', ['mainTitle' => "404, page not found", 'mainContent' => "sorry, but the requested page does not exist :("])