Поймать код состояния с перенаправления в Slim v3

У меня есть представление, которое отправляет форму на другой маршрут, и это проверяет, что все данные в форме верны, но если нет, этот маршрут (/ 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);
});

2

Решение

Код ответа взят из текущего ответа, поэтому по умолчанию он равен 200, если вы не изменили его в текущем маршруте.
Объект ответа создается в каждом запросе, поэтому он не сохраняет введенные ранее значения.

Вы можете взять это так

  • Запрос клиента /check
  • Ответ сервера с редиректом и 403
  • Клиент перенаправляет и просит /form
  • <- здесь вы сейчас, вы не можете знать код состояния 403 в перенаправлении.

Вы можете использовать параметры URL, такие как ?error=trueсеанс или куки.

ИЛИ ЖЕ:

Не перенаправлять и добавить сообщение также /form и подтвердите это там.

2

Другие решения

Других решений пока нет …