我有一个视图,它将表单发送到另一个路由,这会检查表单中的所有数据是否正确,但如果不是,则此路由(/ check)必须重定向到具有表单(/ form)的视图使用代码XXX,所以我可以捕获此代码,我可以知道问题出在哪里(数据不正确,表单未填写......)。
问题是$response->getStatusCode();
也会返回200
。
路线显示如下:
$app->get('/form', function($request, $response, $arguments) {
$error = array("error" => false);
echo $response->getStatusCode(); //Always print 200
if($response->getStatusCode() == XXX)
$error["error"] = true;
return $this->view->render($response, "form.php", $error);
});
$app->post('/check', function($request, $response, $arguments) {
return $response->withHeader('Location', '/form')->withStatus(403);
});
答案 0 :(得分:2)
响应代码来自当前响应,因此当您不在当前路由中更改时,它是默认值200。 响应对象在每个请求中都会创建,因此它不会保存您之前输入的值。
你可以这样做
$root = $uploads['path'];
$imgDir = $root.$path.".jpg";
if (file_exists($imgDir)){
.......
}
/check
您可以使用/form
等网址参数,会话或Cookie。
OR:
不要重定向并将帖子也添加到?error=true
并在那里验证。