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

How to create and pass an array of object to Blade's @include?

我是 Blade 的新手,找不到如何操作。

不幸的是,Blade's documentation 帮助不大,但我已经尝试了以下方法:

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

不出所料,我遇到了以下语法错误:

Parse error: syntax error, unexpected '{', expecting ']'

有人知道正确的语法吗?

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

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

这是有效的 PHP 不过:

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

那将是 stdClass 个对象的数组。当您将数组转换为 object 时,您会得到一个具有这些属性的 stdClass 对象。

基本上,Blade 指令中的所有内容都是一个 'string'/'expression' ... 当 Blade 编译时,它会用 PHP 替换自身,并且该表达式通常直接被删除,所以最后都是PHP,所以必须有效。您可以从存储文件夹中打开任何已编译的视图以查看实际效果。