Pour générer une liste déroulante avec un élément sélectionné par défaut, procédez comme suit:
echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), 'S');
J'ai donc généré une liste déroulante dans laquelle plusieurs éléments sont sélectionnés par défaut, de la manière suivante:
echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple'));
Mais comment puis-je obtenir plusieurs valeurs sélectionnées?
Input::get('size')
ne renvoie que la dernière chaîne sélectionnée.
Tout d'abord, si vous voulez avoir plusieurs éléments sélectionnés par défaut, vous devez donner un tableau de valeurs en tant que 3ème paramètre, pas une valeur simple.
Exemple:
Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple'));
devrait montrer la sélection avec S et M. sélectionné.
Pour le deuxième point, vous devriez essayer de donner un nom comme size[]
au lieu de size
, cela pourrait résoudre le problème (car votre sélection postée n’est pas une simple valeur, c’est un tableau de valeurs)
Les déclarations habituelles de sélection vont
<select name="select_name" id="select_name" multiple="multiple">
Et le flux de travail est que Laravel obtient les éléments de formulaire par leur nom. Pour que cela fonctionne, changez le nom en tableau.
<select name="select_name[]" id="select_name" multiple="multiple">
Ainsi, laravel obtiendra les valeurs de select sous forme de tableau de données.
Selon/ 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']);
Au fait, veuillez noter le nom de la liste déroulante ( size [] ) si vous voulez pouvoir utiliser ce champ comme tableau dans votre backend.
Les choses deviennent difficiles lorsque vous voulez utiliser les relations comme valeur, par exemple
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}
]
Donc $user->colors
retournera quelque chose comme
laravel collection
[
USER_SIZE => [ 'user_id' => 1 , size_id' => 1 ],
USER_SIZE => [ 'user_id' => 1, 'size_id' => 3 ]
]
Vous pouvez faire quelque chose du genre, souvenez-vous que User Model
a une relation sizes
de un à plusieurs avec SIZE Model
Form::select('size[]',['L' => 'Large', 'M' => 'Medium', 'S' => 'Small'], $user->sizes->pluck('size')->pluck('slug')->toArray(), ['multiple' => 'multiple', 'class' => 'form-control']);
J'espère que ça aide