web-dev-qa-db-ja.com

Laravelブレードが@includeを介して文字列で変数を渡すとエラーが発生します

Laravel 5.0.27には、変数と次のコードを含むビューが含まれています。

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

次のエラーが表示されます...

FatalErrorException構文...エラー、予期しない '、'

エラーは「mainContent」変数文字列の「(」のみに起因するものであり、「(」を削除するとエラーが消えてすべてが正常に実行されるようになりました。オンラインにリストされた同様のエラー。

これが予想される動作であるか、またはこれが報告されるべきバグであるかどうかは誰にもわかりますか?

お時間をありがとうございました!

50
joeyfb

これはバグではなく、正規表現によるブレード構文の制限です。ソリューションは github から来ました。

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

以下のコードを試してみてください。

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

$ data配列を渡すことができます

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

$data['mainTitle']layouts.articleなどを使用します

8
varun sharma