Laravel 4表单模型绑定Form :: select

时间:2013-07-15 13:29:51

标签: laravel laravel-4

阅读文档后确定:http://four.laravel.com/docs/html#form-model-binding

我的表单看起来像这样:

{{ Form::model($profile, array('action' => 'ProfilesController@edit', $profile->user_id, 'files' => true)) }}
{{ Form::select('gender', array('0' => 'What gender are you?', '1' => 'Male', '2' => 'Female'), array('class' => 'span12')) }}
{{ From::close() }}

我的问题是:模型绑定不适用于Form :: select,适用于文本输入。我做错了什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:10)

我认为select中的第3个参数需要是选定的值:

{{ Form::select('gender', array('0' => 'What gender are you?', '1' => 'Male', '2' => 'Female'), $profile->gender) }}

我知道它有点挫败了模型绑定的目的,但实际上它会起作用。其他问题当然是现在你已经失去了你的课程!

但如果我们快速浏览一下api:

select( string $name, array $list = array(), string $selected = null, array $options = array() )

我们看到您可以将您的选项数组作为第4个参数传递。

因此,工作代码是:

  

{{Form :: select('gender',array('0'=>'你是什么性别?','1'=>   '男','2'=> '女'),$ profile->性别,数组('class'=>   'span12'))}}

答案 1 :(得分:6)

kJamesy是对的,第三个参数必须是选中的值,但如果将其设置为null,则表单模型绑定将设置默认值。

{{ Form::model($profile, array('action' => 'ProfilesController@edit', $profile->user_id, 'files' => true)) }}
{{ Form::select('gender', array('0' => 'What gender are you?', '1' => 'Male', '2' => 'Female'), null, array('class' => 'span12')) }}
{{ From::close() }}