【问题标题】:Laravel : Is it possible to use the Spread operator in a component constructor?Laravel:是否可以在组件构造函数中使用 Spread 运算符?
【发布时间】:2021-09-18 22:08:24
【问题描述】:

我在 Laravel 8 中使用刀片组件系统。

我目前正在获取很多要传递给组件的参数。所以我正在寻找一种方法,通过扩展运算符将参数(或属性)从刀片模板传递到组件类构造函数中。

所以:

<x-mycmp regularA="something" regularB="somethingelse" custom="test" />

被理解为:

public function __construct ($regularA, $regularB, ...$addidionnalVars)
{
    // ...
}

“自定义”属性在 $addidionnalVars 数组中的位置。

目前,我遇到了“laravel Unresolvable dependency resolveing [Parameter #2 [ ...$addidionnalVars]] in class”错误。

有没有办法让它工作?

【问题讨论】:

    标签: laravel components parameter-passing


    【解决方案1】:

    更新:下面的解决方案似乎只适用于Blade X

    这曾经适用于 BladeX,也许它也适用于你?

    <x-mycmp regularA="something" regularB="somethingelse" ...$spreadVariables/>
    

    【讨论】:

    • 我看到了这个,但我的目标是保持刀片标签简单并恢复所有属性而不在构造函数中指定所有属性。因为,我得到了带有 15 个以上参数的组件,其中很多是可选的。而且这些 var 的数量会随着时间的推移而增长,我确实想每次都重写构造函数。
    • 您可以将它们作为数组或Data Transfer Object?
    • 是的,我的第一个线索是创建一个特殊属性,:options="[...]",但我的首席开发人员不喜欢这样写。
    • 但也许,这对刀片来说是不可能的
    • 不幸的是,我认为这确实不可能。我个人认为Data Transfer Objects 是传递数据的方法。保持组件构造函数和视图干净。
    猜你喜欢
    • 2012-03-07
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多