【问题标题】:Laravel Blade passing variable with string through @include causes errorLaravel Blade 通过@include 传递带有字符串的变量会导致错误
【发布时间】:2015-06-26 16:45:07
【问题描述】:

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

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

我收到以下错误...

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

我已经缩小范围,错误仅来自“mainContent”变量字符串中的“(”,当我删除“(”时,错误消失并且一切运行正常。我在文档中找不到任何内容关于此错误或在线列出的任何类似错误。

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

非常感谢您的宝贵时间!

【问题讨论】:

  • 我不确定这个答案给空格键“(”你可以试试吗?@joey
  • 这似乎是一个错误。它可以使用某种转义方法来工作。但默认情况下它应该按原样工作!
  • 这个bug可以报告给github.com/laravel/framework/issues
  • 谢谢大家,刚刚在this issue上报告了一个错误
  • 很棒的发现!您能否回答您的问题或其他内容,使其不再出现在 php/unanswered 列表中?谢谢!

标签: php laravel laravel-5 blade


【解决方案1】:

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

问题在于使用多行。您只能使用单行 Blade 中的 [传递变量],因为语法受到 [常规限制] 表达式]

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

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

【讨论】:

【解决方案2】:

你可以传递一个$data数组

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

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

【讨论】:

    【解决方案3】:

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

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

    @include('view.name', ['some' => 'data'])
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 2014-04-30
    相关资源
    最近更新 更多