12

デフォルトで項目が選択されたドロップダウン リストを生成するには、次のようにします。

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')最後に選択された文字列のみを返します。

4

4 に答える 4

36

まず、デフォルトで複数の項目を選択したい場合は、単純な値ではなく、値の配列を 3 番目のパラメーターとして指定する必要があります。

例:

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

S と M が選択された状態で選択を表示する必要があります。

size[]2 番目の点については、代わりに のような名前を付けるようにsizeしてください。問題を解決できる可能性があります (投稿された選択は単純な値ではなく、値の配列であるため)

于 2013-03-12T10:36:54.950 に答える
1

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ますsizesSIZE Model

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

それが役に立てば幸い

于 2016-09-20T15:26:59.387 に答える