Yii2模型错误在视图中消失,为什么?

时间:2018-11-08 15:27:27

标签: yii2

我有一个视图,其中包括一个表格。如果模型的属性在数据库中为空,那么我会看到表格,因此我可以立即上载文件,该文件会同时更新数据库中的属性,因此下一次,我将根据自己的需要查看数据已上传。

这是我的控制者:

public function actionView($id) {
    $model = $this->findModel($id);
    ...
    if ($model->load($_POST)) {
        $this->actionUpload($id);
    }

    return $this->render('view', [
        'model' => $model,
    ]);
}


public function actionUpload($id) {
    $model = $this->findModel($id);

    if ($model->upload()) {
        return $this->redirect(Url::previous());
    } else {
        # ***
        return $this->render('view', [
            'model' => $model,
        ]);
    }
}

***如果验证失败,此时我可以看到错误,但是在视图中不再显示该错误,因为它是空的。怎么可能?应该在那里,不是吗?在某个地方我做错了,但我不知道如何做。

我的观点:

if ($model->attr) {
    echo $model->attr;
} else {
    echo $this->render('_upload', [
        'model' => $model,
    ]);
}

_upload:

echo $form->field($model, 'uploadedFiles[]')->fileInput([...
echo $form->errorSummary($model);

(submitButton)

您能告诉我我的错误在什么时候消失吗?

1 个答案:

答案 0 :(得分:1)

将两个控制器动作合并为一个动作。从第一个操作开始,您将调用第二个操作,该操作成功重定向-因此它将永远不会返回第一个操作。