2016-05-06 4 views
2

У меня есть представление, которое отправляет форму другому маршруту, и это проверяет правильность всех данных в форме, но если нет, этот маршрут (/ check) должен быть перенаправлен на представление с помощью форму (/ form) с кодом XXX, чтобы я мог поймать этот код, и я знаю, где проблема (неправильные данные, форма не заполнена ...). Проблема в том, что $response->getStatusCode(); также возвращает 200.Код перехода с перенаправления в Slim v3

Маршруты показать, как это:

$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

Вы заметили, что вы переадресовываете ''/access'' в ''/check'', а не ''/form'' – jmattheis

+0

Оба типа и доступа загружают один и тот же вид. Но да, я об этом не заметил. – legomolina

ответ

2

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

Вы можете принять это как запрос, который клиент

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

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

ИЛИ:

Dont переадресовать и добавить запись также /form и проверить его там.

+0

Ммм, хорошо, я буду использовать параметры запроса, но где я могу использовать код состояния, если страница, которая перенаправляет, не принимает его? В чем его цель? Спасибо – legomolina

+2

Код статуса отправляется браузеру, а не серверу. –

+2

В основном, для уведомления пользователя/браузера, если есть какие-либо ошибки. – jmattheis

 Смежные вопросы

  • Нет связанных вопросов^_^