Getting selected values from a multiple select form in Laravel
First, if you want to have multiple item selected by default, you have to give an array of values as 3rd parameter, not a simple value.
Exemple:
Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple'));
should show the select with S and M selected.
For the second point, you should try to give a name like size[]
instead of size
, it could be solve the problem (because your posted select is not a simple value, its an array of values)
Usual Select statements go
<select name="select_name" id="select_name" multiple="multiple">
And the workflow is that Laravel gets the form elements by their name. To make it work, change the name to an array.
<select name="select_name[]" id="select_name" multiple="multiple">
This will make laravel get the values of select as an array of data.
According with 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']);
By the way, please notice dropdown's name (size[]) if you want to be able to use this field as array in your backend.
Things get tricky when you want uses relationships as value, for instance
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}
]
So $user->colors
will return something like
laravel collection
[
USER_SIZE => [ 'user_id' => 1 , size_id' => 1 ],
USER_SIZE => [ 'user_id' => 1, 'size_id' => 3 ]
]
You could do something like, remember User Model
have a sizes
relationship of one to many with SIZE Model
Form::select('size[]',['L' => 'Large', 'M' => 'Medium', 'S' => 'Small'], $user->sizes->pluck('size')->pluck('slug')->toArray(), ['multiple' => 'multiple', 'class' => 'form-control']);
Hope it helps