【发布时间】:2014-07-22 12:53:14
【问题描述】:
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); ?>
如何获取表单以使用现有选择填充选择框?
【问题讨论】: