更改列表框中所选属性的优先级
change the priority of selected attribute in listbox
示例代码如下:
在控制器中
foreach($UserTypesArray as $key => $value)
{
$model->allowed_users[$key] = ['selected' => 'selected'];
}
$model->htmlOptions = array('multiple' => 'true', 'options' => $model->allowed_users);
在视图中
$form->field($model, 'user_type_id[]')->listBox($model->all_users , $model->htmlOptions);
好的,我们开始吧!
我在 "how to make list box with pre selected values from the database"
上搜索了很多
发生了两件事
1) 我最终写了上面的代码(没有问题没有错误,完美运行)
2) 我发现在 htmlOptions 中 selected="selected"
的优先级较低,因此它会被覆盖并自动从所有 option
标签中删除
更进一步,如果我用 ['disabled' => 'disabled']
替换 ['selected' => 'selected']
它有效并且所有 option
标签在列表框中被禁用....因为 disabled
有更高的优先级,因此它被推送到 option
标记中,但 selected
属性不会被推送,因为它的优先级较低。
有人知道如何解决这个问题吗?
我在其中一个 yii 论坛上发现了 yii 本身的错误。所以想和大家分享一下。
如果你这样写
['selected' => 'selected'];
没用。
但是如果你这样写的话
['selected ' => 'selected']; or true
选择后考虑space。 ['selected '
如果你只是在选择后放一个 space 它就完美了。
不知道这是为什么。但它有效。
示例代码如下:
在控制器中
foreach($UserTypesArray as $key => $value)
{
$model->allowed_users[$key] = ['selected' => 'selected'];
}
$model->htmlOptions = array('multiple' => 'true', 'options' => $model->allowed_users);
在视图中
$form->field($model, 'user_type_id[]')->listBox($model->all_users , $model->htmlOptions);
好的,我们开始吧!
我在 "how to make list box with pre selected values from the database"
上搜索了很多发生了两件事
1) 我最终写了上面的代码(没有问题没有错误,完美运行)
2) 我发现在 htmlOptions 中 selected="selected"
的优先级较低,因此它会被覆盖并自动从所有 option
标签中删除
更进一步,如果我用 ['disabled' => 'disabled']
替换 ['selected' => 'selected']
它有效并且所有 option
标签在列表框中被禁用....因为 disabled
有更高的优先级,因此它被推送到 option
标记中,但 selected
属性不会被推送,因为它的优先级较低。
有人知道如何解决这个问题吗?
我在其中一个 yii 论坛上发现了 yii 本身的错误。所以想和大家分享一下。
如果你这样写
['selected' => 'selected'];
没用。
但是如果你这样写的话
['selected ' => 'selected']; or true
选择后考虑space。 ['selected '
如果你只是在选择后放一个 space 它就完美了。
不知道这是为什么。但它有效。