2013-03-12 6 views
12

で複数選択フォームから値を選択しましょう:は、以下が行われ、デフォルトで選択した項目とドロップダウンリストを生成するための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')は、最後に選択した文字列のみを返します。

答えて

35

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

Exemple:

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

はSとM選択で選択を表示する必要があります。第二の点について、あなたはsize[]代わりのsizeのような名前を与えることを試みるべき

(あなたの投稿を選択は単純な値、値のその配列ではないので)、それは

通常
+7

お返事ありがとうございます。 'size'の代わりに' size [] 'を使うと、私が意図したことができました。 – SUB0DH

13

を問題を解決することができSelect文は

<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']); 

によると

1

は、(サイズ[])ドロップダウンの名前を何卒ご了承下さい。

お好きな時に物事がトリッキー取得だから$user->colorsUser Modelを持って覚えて、あなたが好きな何かができる

laravel collection 

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

のようなものを返します。インスタンス

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} 
            ] 

のために、値としての関係を使用していますsizesと1対多の関係SIZE Model

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

希望します。

関連する問題