首页 > 解决方案 > 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,
    ]);
}

_上传:

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

(submitButton)

你能告诉我什么时候我的错误会消失吗?

标签: yii2

解决方案


将两个控制器动作合并为一个动作。从第一个动作开始,您正在调用第二个动作,它会在成功时重定向- 所以它永远不会返回到第一个动作。


推荐阅读