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

use*_*871 5 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() }}
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助.

kJa*_*esy 10

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

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

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

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

select( string $name, array $list = array(), string $selected = null, array $options = array() )
Run Code Online (Sandbox Code Playgroud)

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

因此,工作代码是:

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


小智 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() }}
Run Code Online (Sandbox Code Playgroud)