Yii2 无法获取禁用的下拉列表或文本字段的值
Yii2 Doesn't Get the Value of Disabled Dropdown List or Textfield
我想禁用某些文本字段和下拉列表以防止用户更改其值。但是每当我尝试这样做时,它都不会 collect/get 那个特定的禁用文本字段或下拉列表的数据。
这是我显示下拉列表的视图。它在 for
循环内:
echo $form->field($model1[$i], 'earning_item_id')->widget(Select2::classname(), [
'data' => $earningslistData,
'options' => ['placeholder' => '', 'prevOptionID' => $model1[$i]->earning_item_id, 'prevOptionName' => $earningslistData[$model1[$i]->earning_item_id],
"name" => "EarningDetails[".$i."][earning_item_id]", "row_count1" => $i],
//'disabled' => true,
'pluginOptions' => [
'allowClear' => true,
'label' => false
]
]);
这是不禁用它们的样子:
然后,当我保存它时,它看起来像这样:
但是,当我禁用下拉列表时,它会给我这个:
我认为 全名 来自我的模型,但我不知道为什么:
public function getFullName()
{
return $this->user ? $this->user->fname . ' ' . $this->user->lname : 'Full Name';
}
当我禁用一个文本字段时,情况是一样的:
echo $form->field($model, 'user_id')->widget(Select2::classname(), [
'data' => $listData,
'options' => ['placeholder' => 'Select a Staff'],
'disabled' => true,
'pluginOptions' => [
'allowClear' => true,
],
])->label('Employee Name');
我正在为我的表单字段使用 Kartik 小部件。
有没有办法来解决这个问题?请告诉我怎么做。
编辑
感谢下面的评论者,我发现了 disabled
和 readonly
之间的区别。因为它是一个下拉列表,所以这是我所做的:
echo $form->field($model, 'user_id')->widget(Select2::classname(), [
'data' => $listData,
'options' => ['placeholder' => 'Select a Staff', ],
'pluginOptions' => [
'allowClear' => true,
],
])->label('Employee Name');
echo $form->field($model, 'user_id')->widget(Select2::classname(), [
'data' => $listData,
'options' => ['placeholder' => 'Select a Staff', 'style' => 'display:none'],
'pluginOptions' => [
'allowClear' => true,
],
])->label('');
Disabled html 表单域不会提交,问题不在yii 本身。在这种情况下的解决方案是拥有相同字段的 2 个副本,一个像您已经包含的那样被禁用,另一个在原始字段之后隐藏,其值与下面相同。
echo $form->field($model1[$i], 'earning_item_id')->hiddenInput()->label('');
我想禁用某些文本字段和下拉列表以防止用户更改其值。但是每当我尝试这样做时,它都不会 collect/get 那个特定的禁用文本字段或下拉列表的数据。
这是我显示下拉列表的视图。它在 for
循环内:
echo $form->field($model1[$i], 'earning_item_id')->widget(Select2::classname(), [
'data' => $earningslistData,
'options' => ['placeholder' => '', 'prevOptionID' => $model1[$i]->earning_item_id, 'prevOptionName' => $earningslistData[$model1[$i]->earning_item_id],
"name" => "EarningDetails[".$i."][earning_item_id]", "row_count1" => $i],
//'disabled' => true,
'pluginOptions' => [
'allowClear' => true,
'label' => false
]
]);
这是不禁用它们的样子:
然后,当我保存它时,它看起来像这样:
但是,当我禁用下拉列表时,它会给我这个:
我认为 全名 来自我的模型,但我不知道为什么:
public function getFullName()
{
return $this->user ? $this->user->fname . ' ' . $this->user->lname : 'Full Name';
}
当我禁用一个文本字段时,情况是一样的:
echo $form->field($model, 'user_id')->widget(Select2::classname(), [
'data' => $listData,
'options' => ['placeholder' => 'Select a Staff'],
'disabled' => true,
'pluginOptions' => [
'allowClear' => true,
],
])->label('Employee Name');
我正在为我的表单字段使用 Kartik 小部件。 有没有办法来解决这个问题?请告诉我怎么做。
编辑
感谢下面的评论者,我发现了 disabled
和 readonly
之间的区别。因为它是一个下拉列表,所以这是我所做的:
echo $form->field($model, 'user_id')->widget(Select2::classname(), [
'data' => $listData,
'options' => ['placeholder' => 'Select a Staff', ],
'pluginOptions' => [
'allowClear' => true,
],
])->label('Employee Name');
echo $form->field($model, 'user_id')->widget(Select2::classname(), [
'data' => $listData,
'options' => ['placeholder' => 'Select a Staff', 'style' => 'display:none'],
'pluginOptions' => [
'allowClear' => true,
],
])->label('');
Disabled html 表单域不会提交,问题不在yii 本身。在这种情况下的解决方案是拥有相同字段的 2 个副本,一个像您已经包含的那样被禁用,另一个在原始字段之后隐藏,其值与下面相同。
echo $form->field($model1[$i], 'earning_item_id')->hiddenInput()->label('');