У меня есть представление, которое отправляет форму на другой маршрут, и это проверяет, что все данные в форме верны, но если нет, этот маршрут (/ 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);
});
Код ответа взят из текущего ответа, поэтому по умолчанию он равен 200, если вы не изменили его в текущем маршруте.
Объект ответа создается в каждом запросе, поэтому он не сохраняет введенные ранее значения.
Вы можете взять это так
/check
/form
Вы можете использовать параметры URL, такие как ?error=true
сеанс или куки.
ИЛИ ЖЕ:
Не перенаправлять и добавить сообщение также /form
и подтвердите это там.
Других решений пока нет …