Получение выбранных значений из формы множественного выбора в Laravel

Для создания раскрывающегося списка с выбранным по умолчанию элементом выполняется следующее:

echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), 'S'); 

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

 echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple')); 

Но как мне получить более одного выбранного значения?

Input::get('size') возвращает только последнюю выбранную строку.

Во-первых, если вы хотите, чтобы по умолчанию был выбран несколько элементов, вам нужно указать массив значений как 3-й параметр, а не простое значение.

Exemple:

 Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple')); 

должен отображать выбор с выбранными S и M.

Во втором случае вы должны попытаться указать имя, например size[] вместо size , это может решить проблему (потому что ваш опубликованный выбор не является простым значением, его массив значений)

Операторы обычного выбора go

 <select name="select_name" id="select_name" multiple="multiple"> 

И рабочий процесс заключается в том, что Laravel получает элементы формы по их имени. Чтобы заставить его работать, измените имя на массив.

 <select name="select_name[]" id="select_name" multiple="multiple"> 

Это заставит laravel получать значения select в виде массива данных.

Согласно https://laravelcollective.com/docs/5.2/html#drop-down-lists

 Form::select('size[]',['L' => 'Large', 'M' => 'Medium', 'S' => 'Small'], ['S', 'M'], ['multiple' => 'multiple', 'class' => 'form-control']); 

Кстати, обратите внимание на имя выпадающего списка ( size [] ), если вы хотите использовать это поле в качестве массива в своем бэкэнде.

Все становится сложным, когда вы хотите использовать отношения как ценность, например

 models user => common fields size => id, name, slug [ {id : 1 , name : Large, slug : L}, {id : 2 , name : Small, slug : S}, {id : 3 , name : Medium, slug : M} ] user_size => id, user_id, size_id [ {id :1, user_id:1, size_id:1} {id :2, user_id:1, size_id:3} ] 

Так что $user->colors вернет что-то вроде

 laravel collection [ USER_SIZE => [ 'user_id' => 1 , size_id' => 1 ], USER_SIZE => [ 'user_id' => 1, 'size_id' => 3 ] ] 

Вы могли бы сделать что-то вроде: помните, что User Model имеет отношения sizes от одного до многих с помощью SIZE Model

 Form::select('size[]',['L' => 'Large', 'M' => 'Medium', 'S' => 'Small'], $user->sizes->pluck('size')->pluck('slug')->toArray(), ['multiple' => 'multiple', 'class' => 'form-control']); 

Надеюсь, поможет