Yii2 ActiveForm dropDownList 值在表单中设置但在 beforeSave 中为空
Yii2 ActiveForm dropDownList value set in the form but empty in 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
....
注意 item 是空的。
有什么提示吗?
我无法说出真正的问题,但在我的例子中,我有 2 个模型,child 有自己的规则,parent 有自己的规则。我试图合并这两个规则(来自 parent 和 child 模型)但它没有用。所以我移动了 parent 模型中的所有规则。
我一直在到处寻找这个,但找不到答案。
我正在使用我为要更新的字段定制的 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
....
注意 item 是空的。
有什么提示吗?
我无法说出真正的问题,但在我的例子中,我有 2 个模型,child 有自己的规则,parent 有自己的规则。我试图合并这两个规则(来自 parent 和 child 模型)但它没有用。所以我移动了 parent 模型中的所有规则。