tutorial - Valor seleccionado de Yii2 dropdown
yii2 basic (8)
Básicamente, usted afecta las opciones (sus elementos de <option>
) utilizando el valor real del atributo de valor como la clave de matriz en la matriz de opciones dropDownList.
Entonces, en este caso, tengo una matriz de estados y los atributos de valor tienen la abreviatura de estado, por ejemplo value="FL"
. Obtengo mi estado seleccionado de la tabla de Direcciones, que almacena la abreviatura, así que todo lo que tengo que hacer es usar eso como mi clave de matriz en la matriz de opciones :
echo $form->field($model, ''state'')->dropDownList($listData, [''prompt''=>''Select...'', ''options''=>[$address->state=>["Selected"=>true]]]);
La documentación lo detalla: http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#dropDownList()-detail
Quiero mostrar el valor seleccionado en el menú desplegable Yii2,
$ _GET Valor:
$id = $_GET["cid"];
Código desplegable
$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('''');
pero este método no está funcionando!
De acuerdo, si está utilizando ActiveForm, el valor de su campo de modelo se usará como el valor seleccionado. Con Html helper la función dropDownList acepta otro doc de selección de parámetros. Ejemplo:
$id = $_GET["cid"];
/yii/helpers/Html::dropDownList(''userid'', $id, [ArrayHelper::map(User::findAll([''active'' => ''1'']), ''id'', ''name''), [......])
Espero que esto ayude
$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('''');
Este es mi enfoque SÓLIDO.
Controlador
$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''))
Vista (vista es como está)
$form->field($model, ''userid'')
->dropDownList(...)
->label('''');
Prueba esto.
$model->userid=$id;
$form->field($model, ''userid'')
->dropDownList(...)
->label('''');
Use este código a continuación:
$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'']);
$model->userid = $_GET[''cid''];
$form->field($model, ''userid'')
->dropDownList(
$items, //Flat array(''id''=>''val'')
[''prompt''=>''''] //options
)->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);
?>
Este código seleccionará automáticamente el valor seleccionado recibido como entrada. Donde $ selectValue será el valor numérico recibido del método GET.
Salida final: <option value="14" selected="selected">NONE</option>