我有一个视图,它将表单发送到另一个路由,并检查表单中的所有数据是否正确,但如果不正确,则此路由(/check)必须重定向到带有代码XXX的表单(/form)的视图,这样我就可以捕获此代码,并知道问题出在哪里(数据不正确,表单未填充…)。问题是$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);
});
响应代码来自当前响应,因此当您不在当前路由中更改它时,它是默认的200。响应对象会在每个请求中创建,因此它不会保存您之前输入的值。
你可以像一样接受
- 客户端请求
/check
- 带有重定向和403的服务器响应
- 客户端重定向和请求
/form
- <--现在,您无法知道重定向中的403状态代码
您可以使用url参数,如?error=true
、会话或cookie。
或:
不要重定向并将帖子添加到/form
并在那里验证。