如何创建一个对象数组并将其传递给Blade的@include?

时间:2017-12-09 22:24:12

标签: php arrays laravel object blade

我是Blade的新手,无法找到如何做到这一点。

不幸的是,Blade's documentation没有多大帮助,但我已经尝试了以下内容:

@include('module.my-component', [
    'param' => [{
        'x' =>  'A',
        'y' => false
    }, {
        'x' => 'B',
        'y' => true
    }]
])

正如所料,我遇到以下语法错误:

  

解析错误:语法错误,意外“{”,期待']'

有人知道正确的语法吗?

1 个答案:

答案 0 :(得分:2)

您必须使用有效的PHP语法。这不是有效的PHP:

[{'b' => 'a'}]

这是有效的PHP:

[
    (object) ['x' => 'B', 'y' => true],
    (object) [ ... ],
]

这将是stdClass个对象的数组。将数组转换为object时,会得到一个包含这些属性的stdClass对象。

基本上,Blade指令中的所有内容都是单个“字符串”/“表达式”......当刀片编译时,它会用PHP替换它,并且该表达式通常只是直接删除,所以它最终都是PHP,所以它必须是有效的。您可以从存储文件夹中打开任何已编译的视图,以查看此操作。