【问题标题】:How to display 'selected' value of dropdown in Laravel Blade template used for both edit/create?如何在用于编辑/创建的 Laravel Blade 模板中显示下拉菜单的“选定”值?
【发布时间】:2015-01-15 23:07:02
【问题描述】:

我在 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() }}

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

【问题讨论】:

  • 实际上,通过模型绑定,您应该可以只删除 $data->foo 部分。该值将根据选择的名称(foo)设置。
  • 啊!太棒了,我是 laravel 的新手,我不知道。您应该将此作为答案发布,以便我接受!

标签: php laravel


【解决方案1】:

Form Model Binding 的全部目的是您不必自己设置输入字段的值。您可以将 value 参数留空,Laravel 将根据选择、输入等的 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() }}

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2020-05-14
    • 1970-01-01
    • 2015-10-26
    • 2014-01-26
    相关资源
    最近更新 更多