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


71

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

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

我得到以下错误...

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

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

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

非常感谢您的宝贵时间!


我不确定该答案是否应为空格键((“您能尝试吗?@joey
Kornkrit Leelhaphunt 2015年

这似乎是一个错误。它可以使用某种转义方法来开始工作。但默认情况下,它应该可以正常工作!
Alupotha 2015年


谢谢大家,刚刚将其报告为此问题
joeyfb 2015年

很棒的发现!您能否回答您的问题或其他内容,使其不再出现在php / unanswer列表中?谢谢!
Rob_vH 2015年

Answers:


116

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

问题是使用多行。由于语法[受正则表达式限制],因此只能在Blade中使用一行来[传递变量]

尝试下面的代码,您应该会很好:

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

4
Laravel似乎解除了这个限制5.6cloud.mxchange.org/s/149vSQYmDeENiuY/…–
罗兰

该问题声称从5.6开始,它仍然不起作用,但是应该很快就可以解决,尽管如果已实现,则该问题没有更新github.com/laravel/framework/issues/8502
joeyfb

19

您可以传递$ 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


15

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

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

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

1
不知道为什么人们对此表示反对!
阿罗丁·艾哈迈德

我也看不到任何理由
Matteus Barbosa

我不赞成这个答案,因为它没有解决实际的问题。问题的前提是包含带有特定变量包含和格式的中断,请参阅我的github问题以获取对它的理解:github.com/laravel/framework/issues/8502
joeyfb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.