Я хочу отключить определенные текстовые поля и выпадающие списки, чтобы пользователь не мог изменять свои значения. Но всякий раз, когда я пытаюсь, он не собирает/не получает данные этого конкретного отключенного текстового поля или выпадающего списка.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 для своих полей формы. Есть ли способ исправить это? Скажите, пожалуйста.
EDIT
Благодаря комментаторами ниже я выяснил разницу между 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
Вы должны использовать readonly, поле disable не будет отправлять данные на сервер. Вы можете проверить этот ответ за дополнительной информацией. Http://stackoverflow.com/a/7730719/1635676 –
спасибо за ваш ответ. добавление 'readonly' в этот виджет будет' 'readonly '=> true,' но он, похоже, не работает. он все еще доступен для редактирования. похоже, ничего не изменилось. – kaynewilder