Laravel Blade通过@include传递带字符串的变量会导致错误

joe*_*yfb 55 php laravel blade laravel-5

在Laravel 5.0.27中,我包含一个带有变量和以下代码的视图:

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

我收到以下错误...

FatalErrorException语法...错误,意外','

我已经缩小了错误,只是来自"mainContent"变量字符串中的"("),当我删除"("错误消失,一切运行正常.我在文档中找不到任何内容或者在线列出的任何类似错误.

有谁知道这是预期的行为还是这是一个应该报告的错误?

非常感谢你的时间!

joe*_*yfb 89

这不是一个错误,而是由于正则表达式而导致的刀片语法限制.解决方案来自github:

问题是使用多线.你只能在Blade中使用一行来传递[传递变量],因为语法是有限的[通过正则表达式]

尝试下面的代码,你应该很高兴:

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

  • Laravel`5.6`似乎解除了限制:https://cloud.mxchange.org/s/149vSQYmDeENiuY/download?path=%2FLaravel%205.6&files=blade-multiline-example.txt (3认同)

Mat*_*osa 22

5.8v 中,包含的视图按照文档从父级继承所有变量:

即使包含视图将继承父视图中可用的所有数据,您也可以将一组额外数据传递给包含视图:

@include('view.name', ['some' => 'data'])
Run Code Online (Sandbox Code Playgroud)


var*_*rma 9

您可以传递$ data数组

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

使用$data['mainTitle']layouts.article

  • 请不要这样做。Blade 文件中不需要 php 标签。您不仅根本不需要 $data,您还应该在控制器中进行所有 php 处理。 (2认同)