0
我一直在尋找這個無處不在,但無法找到答案。Yii2 ActiveForm dropDownList在表單中設置的值,但在beforeSave中爲空
我正在使用Gii CRUD發生器,我爲更新的字段進行了自定義。與驗證規則無關,因爲我沒有收到任何錯誤。
這是場景:我想要一個dropDownList,用戶從中選擇一個列表項並在模型中更新項目。
問題:當我在_form.php中記錄值時,它們被正確檢索並顯示在窗體上。但是,當我單擊更新按鈕並在beforeSave中記錄模型值時,我發現目標字段爲空。我沒有得到任何錯誤,模型被保存爲空字段。
以下是我的代碼。
_form.php這個
<?php $form = ActiveForm::begin(); ?>
....
<?php $list = ArrayHelper::map($this->context->getListItems($model->id), 'id', 'item'); ?>
<?= $form->field($model, 'item')->dropDownList($list, ['prompt'=>'Select...']) ?>
....
<?php ActiveForm::end(); ?>
型號:
<?php
....
public function beforeSave($insert)
{
echo '<pre>';
print_r($this);
echo '</pre>';
exit();
return parent::beforeSave($insert);
}
....
?>
以上的結果是:
frontend\models\Model Object
(
[_attributes:yii\db\BaseActiveRecord:private] => Array
(
....
[id] => 14
[item] =>
[last_modified] => 2016-09-28 13:16:43
....
通知如何項是空的。
任何提示?
表單是否顯示選定的項目更新? –
你說它與驗證規則無關,但如果你在模型上使用'load()'方法,並且沒有定義屬性的規則,這個屬性沒有設置,所以這可能就是'item'爲空的原因。 – Bizley
@InsaneSkull是它顯示正確。不過,@Bizley是對的。它必須使用'load()'來處理,因此使用驗證規則。 – intumwa