我想禁用某些文本框和下拉列表以防止用戶更改其值。但每當我嘗試時,它都不會收集/獲取特定禁用的文本字段或下拉列表的數據。Yii2沒有得到禁用的下拉列表或文本框的值
這是我的視圖,顯示我的下拉列表。這是一個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('');
而不是禁用屬性嘗試readOnly = true – Chinmay
您應該使用只讀,禁用字段將不會發送數據到服務器。您可以檢查此答案以獲取更多信息http://stackoverflow.com/a/7730719/1635676 –
感謝您的回覆。在這個小部件中增加'readonly'將會是''readonly'=> true,'但它似乎不起作用。它仍然是可編輯的。似乎沒有任何改變。 – kaynewilder