yii2 - 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)
你能告诉我什么时候我的错误会消失吗?
解决方案
将两个控制器动作合并为一个动作。从第一个动作开始,您正在调用第二个动作,它会在成功时重定向- 所以它永远不会返回到第一个动作。
推荐阅读
- reactjs - 降低 TSDX 包的导入成本
- firebase - 使用 Flutter 永久存储数据
- nullpointerexception - 截屏时出现空指针异常......建议任何解决方案
- python - CV2中的RGB到灰度转换
- assembly - 在 MIPS 中获取参数并返回 $v0 和 $v1
- highcharts - 有没有办法在 Highcharts 中为多条实时曲线关闭动画?
- .net - 使用 MatBlazor 的 Blazor 多个 NumericUpDownField 绑定
- vb.net - 在visual basic中为tic tac toe编码玩家名称
- excel - 热门解决:VBA Copy Values only 1004 Error?
- typescript - 变量 x 满足接口 A 并且可选地也满足接口 B