如何在yii2的ActiveFrom中禁用下拉列表中的一项?

4

Yii2 active form

<?= $form->field($model, 'pid')->dropDownList([1=>1,2=>2])->hint('上级分类') ?>

我想禁用选项2=>2。

有什么方法可以做到吗?

4个回答

5
您可以使用“options”关键字为下拉列表中的所有项目添加属性。假设您想禁用第二个项目。
<?= $form->field($model, 'pid')->dropDownList([1 => 1, 2 => 2], ['options' => [2 => ['disabled' => true]]])->hint('上级分类') ?>

在文档中:http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#activeDropDownList()-detail。该函数与活动表单控件相关,用于创建一个下拉列表组件,可将其用于表单中。

没错,但是它和我的答案有什么不同呢?我比你快了一分钟 :) - arogachev
谢谢,它有效了。我仔细阅读了文档并找到了选项。但是在阅读代码时我有些困惑。我认为Yii2框架的代码有点深奥。<?= $form->field($model, 'pid')->dropDownList([1 => 1, 2 => 2], ['options' => [1 => ['disabled' => true]]])->hint('上级分类') ?> - Xiu Hong

2

ActiveField 的 dropDownlist() 明确调用了 BaseHtml 的 activeDropDownList():

ActiveField dropDownList() 的文档中可以看到:

标签选项以名称-值对的形式表示。

有关可用选项的列表,请参阅 yii\helpers\Html::activeDropDownList() 中的 $options 参数。

BaseHtml activeDropDownList() 的文档中可以看到:

options: array, the attributes for the select option tags. The array keys must be valid option values, and the array values are the extra attributes for the corresponding option tags. For example,

[
    'value1' => ['disabled' => true],
    'value2' => ['label' => 'value 2'],
];

所以传递这些选项:

[
    2 => ['disabled' => true],
],

作为dropDownList()的第二个参数。

2
这一定会起作用:
<?= $form->field($model, 'pid')->dropDownList([1=>1,2=>2], ['options'=>['2'=>['disabled'=>true]]]) ?>

1
它与其他答案有何不同? - Chinmay Waghmare
实际上,我没有刷新页面,那时还没有答案。所以当我发布我的答案时,我知道已经有两个答案被发布了。 - Ankush Rishi
2
只是提醒一下 - 即使您不刷新页面,警告“...问题的答案”也会出现,您可以单击它,它们将在不刷新页面的情况下加载。 - arogachev
2
好的。谢谢你的建议,我也道歉。 - Ankush Rishi

0

试试这个:

$disableDataArr['1'] =  ['disabled' => true];
dropDownList( $dataArr, ['options'=> $disableDataArr ])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接