为CREATE视图设置默认值的正确方法是什么?

时间:2016-07-16 22:28:58

标签: laravel blade

我想为我的模型属性设置一个默认值:

_form.blade.php代码:{!! Form::text('attribute','Default Value') !!}

由于_form.blade.phpcreate.blade.php共享edit.blade.php,因此两个视图始终显示默认值:Default Value

仅为CREATE视图设置默认值的正确方法是什么? 因此,EDIT视图应始终显示已保存模型的值。

这似乎是一个愚蠢的问题,但我很长时间对此感到困惑,我想知道正确的方法。 我有一些想法,例如:

  • 不要使用共享文件进行创建/编辑(_form.blade.php)(我认为这不是一个好主意)。
  • 在控制器中设置默认变量(也不好)。

3 个答案:

答案 0 :(得分:0)

{!! Form::text('name', (isset($savedModel)) ? $savedModel->name : "your default value") !!}

我没有尝试在Form facade元素中使用三元组,但它可能有效。

答案 1 :(得分:0)

我相信你想要的是:

<input name="field" value="{{ old('field', isset($model->field) ? $model->field : '') }}"/>

以下是细分:

  • 如果他们编辑/保存(第一次)表单并且保存失败,但是back()->withErrors(),则会使用此值。
  • 如果他们只是调用&#34;编辑&#34;如果没有更改,则会使用$model->field
  • 如果他们正在创建模型但尚未尝试保存,则不会使用任何值。 (''

这应涵盖所有情景。

答案 2 :(得分:0)

根据我的经验,通常最好不要在创建/编辑操作之间共享视图。您遇到了许多可以避免的条件逻辑,并且在显示表单错误等时可以获得更清晰的用户体验。

至于显示“创建”视图的默认值,我使用old('attribute', 'Default Value')辅助方法来实现此目的。