我使用的是基于select2.github.io的小部件,我需要将其设为只读,以便用户可以看到默认的选择选项,但无法更改,并且我认为该小部件没有此选项。 / p>
是否有适用于所有Select2小部件的通用解决方案?
$form->field($model, 'id_color')->widget(Select2::classname(), [
'items' => ['1' => 'blue', '2' => 'red', '3' => 'yellow']
])
答案 0 :(得分:2)
好吧,有一个名称为disabled
的选项可以作为true
或false
传递,从而呈现禁用的选择或启用的状态。
<?php echo $form->field($model, 'id_color')->widget(Select2::classname(), [
'items' => ['1' => 'blue', '2' => 'red', '3' => 'yellow']
'pluginOptions' => [
'disabled' => true
]
]);
?>
BUT ,在使用前,请注意,禁用的输入不会与表单一起作为post数组的一部分以及readonly
属性`{{3} }。因此,您可能必须采取一种变通方法,为禁用的选择添加一个隐藏的输入,其中包含禁用的选择2的当前所选选项的ID。
所以将以下内容添加到您的表单中,您就可以开始使用
<?php echo $form->field($model, 'id_color')->hiddenInput() ?>
答案 1 :(得分:1)
使用pluginEvents禁用。
<h:outputText value="#{labels.aktiv}"/>
<p:triStateCheckbox value="#{handler.readyFlag}"
converter="triStateConverter">
<p:ajax event="change" update="workflowEventTbl"
listener="#{handler.createDataModel}"
partialSubmit="true"/>
</p:triStateCheckbox>
答案 2 :(得分:0)
如果愿意,请尝试CSS方法。
<?= $form->field($model, 'id_color')->widget(Select2::classname(), [
'data' => ['1' => 'blue', '2' => 'red', '3' => 'yellow'],
'readonly' => true,
]); ?>
<style type="text/css">
select[readonly].select2-hidden-accessible + .select2-container {
pointer-events: none;
touch-action: none;
.select2-selection {
background: #eee;
box-shadow: none;
}
.select2-selection__arrow,
.select2-selection__clear {
display: none;
}
}
</style>
答案 3 :(得分:0)
对于 Select2,您可以将属性 'readonly' 用于 'options'
'options' => [
'readonly' => true
],
例如
echo $form->field($model, 'sazba')->widget(Select2::classname(), [
'data' => $listData,
'options' => [
'placeholder' => '--- Vyberte ---',
'multiple' => false,
'class' => 'hide',
'id' => 'all_sazba',
'value' => $model->sazba,
'readonly' => true
],
'pluginOptions' => [
'allowClear' => true
],
]);