默认将值传递给@include

Pass value into @include by default

长话短说

如何为 @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显式传递,但我更希望它隐式传递

我也从来没有找到一个很好的方法来做到这一点,所以我不得不做一些修改。

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

设置变量的方法有很多种,选择你最喜欢的。我使用的是 @set.

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

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

是的,我知道,这很恶心。不过,我从来没有玩过 View Composer,您也许可以利用它:

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

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