Laravel表单模型绑定多个选择输入

时间:2014-06-02 11:55:43

标签: php laravel laravel-4

clientsassets之间存在多对多关系。 对于我的编辑客户端表单,我有多选框,用户可以选择多个assets附加到客户端。表单使用模型绑定,因此它会使用现有客户端数据自动填充字段。

模型绑定适用于除多选之外的表单中的所有字段。以下是我认为的一个片段:

{{ Form::model($client, ['route' => ['clients.update', $client->id], 'class' => '', 'method' => 'put']) }}

{{ Form::label('name', 'Name', $label_attributes) }}
{{ Form::text('name', null, array('class'=>'form-control')) }}

{{ Form::label('assets', 'Client Benchmarks (Select multiple)', $label_attributes) }}
{{ Form::select('assets[]', $assets, null, array('multiple' => true, 'class' => 'form-control')); }}

当我提交表单时,关系通过我的控制器中的sync方法成功保存数据(update方法):

$client = Client::find($id);
$client->name = Input::get('name');    
$assets = Input::has('assets') ? Input::get('assets') : array();
$client->assets()->sync($assets);
$client->save();

此外,如果我直接输出客户资产,则可以在表单视图中的模型集合中访问它们:

<?php print_r($client->assets); ?>

如何让表单填充现有选择的选择框?

1 个答案:

答案 0 :(得分:2)

echo Form::select('assets[]', $assets, array(1,2), array('multiple' => true));

据我所知,即使使用表单,默认情况下也不会为您设置所有选定的值 模型绑定

这是本机formBuilder方法的样子:

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