我有一个视图,其中包括一个表格。如果模型的属性在数据库中为空,那么我会看到表格,因此我可以立即上载文件,该文件会同时更新数据库中的属性,因此下一次,我将根据自己的需要查看数据已上传。
这是我的控制者:
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)
您能告诉我我的错误在什么时候消失吗?
答案 0 :(得分:1)
将两个控制器动作合并为一个动作。从第一个操作开始,您将调用第二个操作,该操作成功重定向-因此它将永远不会返回第一个操作。