2013-07-21 3 views
6

Борясь с проблемой в Laravel 4, в форме редактирования контактной модели, я могу получить все текущие значения полей, кроме тех, которые из множественного выбора, которые должны установить связь с другой моделью ». Это отношения «многие ко многим». Я получаю список компаний, но никто не выбирается, даже если существует отношение.Множественная выборная форма редактирования выбранных значений

Вот моя форма редактирования:

{{ Form::model($contact, array('route' => array('crm.contacts.update', $contact->id), 'id' => 'edit-contact')) }} 
     <div class="control-group"> 
      {{ Form::label('first_name', 'First Name', array('class' => 'control-label')) }} 
      {{ Form::text('first_name') }} 
     </div> 
     <div class="control-group"> 
      {{ Form::label('last_name', 'Last Name', array('class' => 'control-label')) }} 
      {{ Form::text('last_name') }} 
     </div> 
     <div class="control-group"> 
      {{ Form::label('email', 'Company Email', array('class' => 'control-label')) }} 
      {{ Form::text('email') }} 
     </div> 
     <div class="control-group"> 
      {{ Form::label('company_ids', 'Company', array('class' => 'control-label')) }} 
      {{ Form::select('company_ids[]', $companies, array('',''), array('multiple'), Input::old('company_ids[]')) }} 
     </div> 
{{ Form::close() }} 

Мой контроллер:

public function edit($id) 
{ 
    $contact = Contact::find($id); 
    $company_options = Company::lists('name', 'id'); 
    return View::make('crm.contacts.edit') 
     ->with('contact', $contact) 
     ->with('companies', $company_options);; 
} 

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

Благодаря

ответ

12

Laravel делает не поддержка множественного выбора полей по умолчанию вам необходимо использовать форму :: макросъемки

В приведенном ниже примере на @Itrulia был правильным, вы можете просто сделать:

$users = array(
    1 => 'joe', 
    2 => 'bob', 
    3 => 'john', 
    4 => 'doe' 
); 
echo Form::select('members[]', $users, array(1,2), array('multiple' => true)); 
+0

Где лучше всего вставить это? start.php? Спасибо – maunoxyd

+0

Конечно, я использую файл FormMacros.php, и я включаю его в файл app/start/global.php. – Ryun

+1

массив (1,2) должен быть выбранными элементами, не так ли? Я пробовал, но он не работает. Пожалуйста, больше объяснений. Спасибо. @Ryun –

10

Laravel по умолчанию поддерживает multiselect.

{{ Form::select('members[]', $users, null, array('multiple' => true)); }} 
+0

Он может установить атрибут html, но он не будет обрабатывать выбранную переменную поля в виде массива. Выбранный параметр принимает только строку. – Ryun

+0

Нет, это неправильно. где null - это просто заданный массив значений, и он работает. – Itrulia

+0

Хорошо протестировано, я стою исправлен! извините, что. – Ryun

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