Yii2ドロップダウンで選択した値を表示したい、
$ _GET値:
$id = $_GET["cid"];
ドロップダウンコード
$form->field($model, 'userid')
->dropDownList(
[User::getUser()],
//[ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name')],
['Prompt'=>'Select a user','id'=>'user_dropdown'],
['options' =>
[
$id => ['selected' => true]
]
]
)->label('');
しかし、この方法は機能していません!
これを試して。
$model->userid=$id;
$form->field($model, 'userid')
->dropDownList(...)
->label('');
基本的に、オプションに影響を与えます(<option>
要素)value属性の実際の値をdropDownListオプション配列の配列キーとして使用します。
そのため、この場合、状態の配列があり、値属性には状態の省略形があります。たとえば、value="FL"
。省略形を格納するアドレステーブルから選択した状態を取得しているので、options配列の配列キーとしてそれを使用するだけです。
echo $form->field($model, 'state')->dropDownList($listData, ['Prompt'=>'Select...', 'options'=>[$address->state=>["Selected"=>true]]]);
ドキュメントはそれを綴ります: http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#dropDownList()-detail
これがお役に立てば幸いです
$form->field($model, 'userid')
->dropDownList(
[User::getUser()],
//[ArrayHelper::map(User::find()->where('id' => $id)->all(), 'id', 'name')],
['Prompt'=>'Select a user','id'=>'user_dropdown'],
['options' =>
[
$id => ['selected' => true]
]
]
)->label('');
<?php
$selectValue = $_GET['tid']
echo $form->field($model, 'tag_id')
->dropdownList(
ArrayHelper::map(Tag::find()->where(['visibility'=>'1'])->orderBy('value ASC')->all(), 'tag_id', 'value'),
['options' => [$selectValue => ['Selected'=>'selected']]],
['Prompt' => '-- Select Tag --'])
->label(false);
?>
このコードは、入力として受信した選択値を自動選択します。 $ selectValueは、GETメソッドから受け取った数値です。
最終出力:<option value="14" selected="selected">NONE</option>
$model->userid = $_GET['cid'];
$form->field($model, 'userid')
->dropDownList(
$items, //Flat array('id'=>'val')
['Prompt'=>''] //options
)->label('');
OK、ActiveFormを使用している場合、モデルフィールドの値が選択値として使用されます。 Htmlヘルパーでは、dropDownList関数は別のパラメーター選択を受け入れます doc 。例:
$id = $_GET["cid"];
\yii\helpers\Html::dropDownList('userid', $id, [ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name'), [......])
以下のこのコードを使用します。
$category = \backend\models\ProductCategory::find()->WHERE(['deleted'=>'N'])->all();
$listData = ArrayHelper::map($category,'product_category_id','category_name');
echo $form->field($model, 'product_category_id')->dropDownList($listData,['Prompt'=>'Select']);
これが私のS.O.L.I.Dアプローチです。
コントローラ
$model = new User;
$model->userid = $id; #this line does the magick. Make sure the $id has a value, so do the if else here.
return $this->return('view', compact('model'))
ビュー(ビューは現状のまま)
$form->field($model, 'userid')
->dropDownList(...)
->label('');