2014-06-02 2 views
1

У меня есть много для многих отношений между clients и assets. Для моей клиентской формы редактирования у меня есть окно с несколькими выборами, с помощью которого пользователь может выбрать несколько assets для присоединения к клиенту. Форма использует привязку к модели, поэтому она автоматически заполняет поля существующими данными клиента.Laravel форма привязки модели для многих до многих выбрать вход

Работа с привязкой к модели для всех полей в форме, кроме мульти-select. Вот отрывок из моего зрения:

{{ 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(); 

Кроме того, если выход I клиентские активы, непосредственно они доступны в коллекции модели с моей точкой зрения формы:

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

Как я могу получить форму для заполнения поля выбора с го Существующие выборы?

ответ

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

Насколько я знаю, что это не будет устанавливать все выбранные значения по умолчанию для вас, даже при использовании формы модели связывания

Это то, что нативный метод formBuilder выглядит следующим образом:

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

Да, это не идеально, так как было бы неплохо иметь возможность использовать привязку модели ко всем полям в форме. Похоже, мне нужно вручную передать выбранные значения методу 'select()'. – harryg

+0

Боюсь, что я согласен с тем, что это не имеет большого смысла, но было бы непросто передать массив активных «активных» значений –

+0

Действительно, хотя мне нужно сделать что-то вроде 'array_pluck ($ client- > assets-> toArray(), 'id') ', что не совсем самая элегантная вещь. – harryg

Смежные вопросы