如何在用于两个 edit/create 的 Laravel Blade 模板中显示 'selected' 下拉列表的值?

How to display 'selected' value of dropdown in Laravel Blade template used for both edit/create?

我在 Laravel 4 视图中使用 Blade 模板来显示用于创建和编辑的表单,一切正常,直到我必须呈现 select 输入类型 - 当编辑,但是在创建新记录时我收到一条错误消息 Undefined variable: data,这是由倒数第二行中的 'selected' 值触发的(传递给 Form::select() 的最后一个参数)

@if( isset( $data) )
    {{ Form::model( $data ) }}
@else
    {{ Form::open() }}
@endif

    {{ Form::label( 'foo', 'label text' ) }}
    {{ Form::select( 'foo' , array('0' => 'No', '1' => 'Yes'), $data->foo ); }}
{{ Form::close() }}

在 Laravel 中是否有一种标准方法可以在未定义 $data 时使用我目前使用的模型绑定来避免这种情况?或者我是否需要简单地使用一个变量来提前检查 $data 是否未定义?

Form Model Binding 的全部目的是您不必自己在输入字段上设置值。您可以将值参数留空,Laravel 将根据 select、输入等的 name 填充值

{{ Form::select( 'foo' , array('0' => 'No', '1' => 'Yes')); }}

您甚至可以取消您的 isset($data) 检查,因为 Laravel 也会这样做:

{{ Form::model( $data ) }}
    {{ Form::label( 'foo', 'label text' ) }}
    {{ Form::select( 'foo' , array('0' => 'No', '1' => 'Yes')); }}
{{ Form::close() }}