默认情况下将值传递给@include

时间:2016-05-01 11:36:23

标签: laravel laravel-5 laravel-5.2 blade laravel-blade

长话短说

如何在@include中为记录定义默认值?这是我的代码:

// view - questions.create
@include('questions.__answer', ['number' => 0]) // <-- 'answer' => null by DEFAULT

// view - questions.edit
@include('questions.__answer', ['number' => $index, 'answer' => $answer])

其他细节

如您所见,我为Question模型创建/编辑了视图,其中包含多个可能的答案。单个答案的html代码位于单独的部分视图中,以消除代码重复。我需要重复使用此视图来创建答案,其中应创建新记录从头开始,以及编辑现有答案,其字段应填充现有数据

我当然可以明确地传递'answer' => null ,但我更喜欢将其传递给隐式

1 个答案:

答案 0 :(得分:2)

我也从来没有找到一个好方法,所以我不得不做一点点黑客。

https://github.com/laravel/framework/issues/1844

设置变量有很多方法,但选择你喜欢的。我正在使用@set

然后,在包含的顶部,执行此操作。

@set('number', isset($number) ? $number : null);

是的,我知道,这很糟糕。不过,我从未玩过View Composers,你可以使用它:

https://laravel.com/docs/5.1/views#view-composers

理论上,您可以使用view()和ViewComposer来渲染与Blade内联的部分模板,并将所有令人讨厌的逻辑收集到它所属的OOP中。