Yii2下拉选择值

时间:2014-12-20 14:12:06

标签: yii2 yii2-advanced-app

我想在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('');           

但这种方法不起作用!

9 个答案:

答案 0 :(得分:19)

试试这个。

$model->userid=$id;
$form->field($model, 'userid')
->dropDownList(...)
->label('');

答案 1 :(得分:6)

Basically, you affect the options (your <option> elements) by using the value attribute's actual value as the array key in the dropDownList options array.

So in this case I have an array of states and the value attributes have the state abbreviation, for example value="FL". I'm getting my selected state from the Address table, which stores the abbreviation, so all I have to do is use that as my array key in the options array:

echo $form->field($model, 'state')->dropDownList($listData, ['prompt'=>'Select...', 'options'=>[$address->state=>["Selected"=>true]]]);

The documentation spells it out: http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#dropDownList()-detail

答案 2 :(得分:3)

我希望这会对你有所帮助

$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('');

答案 3 :(得分:2)

$model->userid = $_GET['cid'];
$form->field($model, 'userid')
->dropDownList( 
      $items,                   //Flat array('id'=>'val')
['prompt'=>'']                  //options
)->label('');

答案 4 :(得分:2)

<?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>

答案 5 :(得分:0)

好的,如果您使用的是ActiveForm,那么您的模型字段的值将用作选定的值。使用Html helper dropDownList函数接受另一个参数选择doc。例如:

$id = $_GET["cid"];
\yii\helpers\Html::dropDownList('userid', $id, [ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name'), [......])

答案 6 :(得分:0)

使用以下代码:

select
    t.name table_name,
    s.name schema_name,
    sum(p.rows) total_rows
from
    sys.tables t
    join sys.schemas s on (t.schema_id = s.schema_id)
    join sys.partitions p on (t.object_id = p.object_id)
where p.index_id in (0,1)
group by t.name,s.name
having sum(p.rows) = 0;

答案 7 :(得分:0)

这是我的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('');

答案 8 :(得分:0)

我添加的所有选项都是不需要的。 在“值”索引中写入的内容是将选择哪个下拉项作为默认值。 提示仅显示没有与之关联的值的第一个选项。

echo $form->field($model, 'model_attribute_name')
    ->dropDownList($associativeArrayValueToText, 
    [
        'value'=> $valueIWantSelected, 
        'prompt' => 'What I want as a placeholder for first option', 
        'class' => 'classname'
    ]);

您将在以下文件中找到分配此功能的函数:

vendor / yiisoft / yii2 / helpers / BaseHtml.php

公共静态函数renderSelectOptions($ selection,$ items,&$ tagOptions = [])

还可以从该函数中看到可以添加一个optgroup 到下拉列表中,只需提供一个多维数组,在其中我已将$ associativeArrayValueToText放入其中。这只是意味着您可以通过在下拉菜单中添加组标题来拆分选项。