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 模型中的所有规则。