надеюсь, что вы можете помочь мне с этой странной проблемой: Я пытаюсь перенаправить внутри контроллера, но Кохана продолжает бросать исключение, что я просто не могу понять, почему:Kohana 3.3 Перенаправление Исключение
код в Cadastro .php:
try{
$this->redirect('/dados', 302);
} catch (Exception $e) {
$this->response->body(Json_View::factory(array("line ".$e->getLine()." of file ".$e->getFile().":".$e->getMessage()." - trace as string: ".$e->getTraceAsString())));
} }
след сообщение стека возвращенное исключение в коде выше:
#0 C:\\xampp\\htdocs\\grademagica\\system\\classes\\Kohana\\HTTP.php(33): Kohana_HTTP_Exception::factory(302)
#1 C:\\xampp\\htdocs\\grademagica\\system\\classes\\Kohana\\Controller.php(127): Kohana_HTTP::redirect('\/dados', 302)
#2 C:\\xampp\\htdocs\\grademagica\\modules\\grademagica\\classes\\Controller\\Cadastro.php(123): Kohana_Controller::redirect('\/dados', 302)
#3 C:\\xampp\\htdocs\\grademagica\\system\\classes\\Kohana\\Controller.php(84): Controller_Cadastro->action_signin()
#4 [internal function]: Kohana_Controller->execute()
#5 C:\\xampp\\htdocs\\grademagica\\system\\classes\\Kohana\\Request\\Client\\Internal.php(97): ReflectionMethod->invoke(Object(Controller_Cadastro))
#6 C:\\xampp\\htdocs\\grademagica\\system\\classes\\Kohana\\Request\\Client.php(114): Kohana_Request_Client_Internal->execute_request(Object(Request), Object(Response))
#7 C:\\xampp\\htdocs\\grademagica\\system\\classes\\Kohana\\Request.php(990): Kohana_Request_Client->execute(Object(Request))
#8 C:\\xampp\\htdocs\\grademagica\\index.php(123): Kohana_Request->execute()
#9 {main}
Line 123 в Cadastro.php является «$ this-> перенаправлять ('/ Дадос', 302); ", как описано выше. Кто-нибудь может помочь мне показать, что я делаю неправильно? Я выполняю точные направления documentation
Благодарности
Спасибо за вашу помощь Darsstar, но это не полностью сработало для меня. Я вижу, ГДЕ, как вы указали, возникает исключение, но я все еще не могу понять, ПОЧЕМУ это происходит. Тем не менее, меня беспокоит то, что он по-прежнему не перенаправляется. Я вызвал контроллер через ajax Jquery, чтобы проверить форму на стороне сервера перед перенаправлением. Теперь, с вашей помощью, вызов ajax больше не возвращает данные об исключении, он возвращает ИСТОЧНИК КОДА страницы, на которую я хочу перенаправить. Вы знаете, почему? – Andrade
Что касается WHY, то возникает исключение, так как разработчики Kohana решили, что они будут перенаправлять через предоставленный вспомогательный метод. Что касается того, почему вы получаете SOURCE CODE, я понятия не имею ... Если вы не имеете в виду страницу [Kohana error] (http://kohanaframework.org/3.3/guide/kohana/errors#example). Вы можете попробовать $ this-> response-> status (302) -> headers ('Location', '/ dados'); и посмотрим, лучше ли это. (Возможно, вы захотите включить логику из [HTTP_Exception_Redirect :: location()] (http://kohanaframework.org/3.3/guide-api/HTTP_Exception_Redirect#location) тоже.) – Darsstar
Это потому, что это то, что запрос '$ this-> ('/ dados') 'должен достигнуть, выставив instanace из HTTP_Exception_Redirect. Но, похоже, он никогда не достигает Request_Client_Internal :: execute_request(), потому что он попадает куда-то посередине. Что потенциально может указывать на то, что ваш контроллер становится толстым. Также '$ this-> response = Response :: factory() -> status (302) -> headers ('Location', '/ dados');' немного чище, так как вы начинаете с чистого листа, насколько ответ объект. – Darsstar