clients
和assets
之间存在多对多关系。
对于我的编辑客户端表单,我有多选框,用户可以选择多个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); ?>
如何让表单填充现有选择的选择框?
答案 0 :(得分:2)
echo Form::select('assets[]', $assets, array(1,2), array('multiple' => true));
据我所知,即使使用表单,默认情况下也不会为您设置所有选定的值 模型绑定
这是本机formBuilder方法的样子:
public function select($name, $list = array(), $selected = null, $options = array())