2
希望你能幫助我解決這個奇怪的問題:我想從控制器內的重定向,但Kohana的不斷拋出,我只是不明白,爲什麼一個例外:Cadastro的Kohana 3.3重定向異常
代碼.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}
123 Line在Cadastro.php是「$這 - >重定向( '/ dados', 302);「,如所述以上所述。 有沒有人可以幫助我顯示我做錯了什麼?我下面的documentation
感謝的確切方向
感謝您的幫助Darsstar,但它並沒有完全爲我工作。正如你指出的那樣,我可以看到WHERE異常被提出,但我仍然不明白爲什麼會發生這種情況。 不過,困擾我的是它仍然沒有重定向。我通過jquery的ajax調用了控制器,以便在重定向之前驗證服務器端的表單。現在,在您的幫助下,ajax調用不再返回異常數據,它返回我想要重定向到的頁面的源代碼。你有什麼想法,爲什麼? – Andrade
至於爲什麼會拋出異常,這就是Kohana開發者決定通過提供的輔助方法重定向的方式。至於爲什麼你得到源代碼,我不知道...除非你的意思是[Kohana錯誤頁面](http://kohanaframework.org/3.3/guide/kohana/errors#example)。你可以嘗試$ this-> response-> status(302) - >標題('Location','/ dados');並看看這是否更好。 (你可能想要包含來自[HTTP_Exception_Redirect :: location()](http://kohanaframework.org/3.3/guide-api/HTTP_Exception_Redirect#location)的邏輯。) – Darsstar
這是因爲它是'$ this->請求('/ dados')'應該通過拋出HTTP_Exception_Redirect的實例來實現。但它似乎永遠不會到達Request_Client_Internal :: execute_request(),因爲它在兩者之間被捕獲。這可能表明你的控制器變胖了。還有'$ this-> response = Response :: factory() - > status(302) - > headers('Location','/ dados');'因爲您從乾淨的石板開始,對象是關心的。 – Darsstar