YII2提交具有给定模型值的表单

时间:2015-05-08 06:25:12

标签: yii2-advanced-app

如何将默认值添加到要保存的模型?

+--------------+--------------+-
| Field        | Type         |
+--------------+--------------+-
| id           | int(11)      | ->auto increment
| grant        | double(12,2) |
| lcc          | double(12,2) |
| encoded_by   | int(11)      | ->foreign key from tbl_user
+--------------+--------------+-

这是html表单代码。

<?= $form->field($model, 'grant')->textInput() ?>

<?= $form->field($model, 'lcc')->textInput() ?>

我提交错误提交..

  

SQLSTATE [23000]:完整性约束违规:1452无法添加或   更新子行:外键约束失败   (ncddptbl_sp_bub,CONSTRAINT tbl_sp_bub_ibfk_2 FOREIGN KEY   (encoded_by)REFERENCES userid))正在执行的SQL是:   INSERT INTO tbl_sp_bubgrantlcc)价值观(2,2)

据我所知,编码的值应该是当前用户ID。

我试过了。

<?= $form->field($model, 'grant')->textInput() ?>

<?= $form->field($model, 'lcc')->textInput() ?>
<? $model->encoded_by=yii::$app->user->identity->id ?>

以及控制器中的这个...

public function actionCreate()
    {
        $model = new TblSpBub();
        $model->encoded_by=yii::$app->user->identity->id;//MY CODE
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['index']);
        } else {
            return $this->renderAjax('create', [
                'model' => $model,
            ]);
        }
    }

但无济于事......

1 个答案:

答案 0 :(得分:1)

有解决此问题的内置行为BlameableBehavior。这是你的用法。将其添加到您的模型中:

public function behaviors()
{
    return [
        [
            'class' => BlameableBehavior::className(),
            'createdByAttribute' => 'encoded_by',
            'updatedByAttribute' => false, // Set it to false if you need automatically update it on create only
        ],
    ];
}

无需手动处理。