我有一個在我的基礎控制器的構造函數中請求的服務,以確保它始終運行。該服務檢查數據庫中的某些內容,並可能會出錯。如果出現錯誤,我想將用戶重定向到顯示此錯誤的頁面。我找不到任何方法來實現這一點,因爲重定向只能從控制器的操作中返回。我想要的是能夠從行動之外「返回」重定向。我需要做些什麼才能夠從我的服務中重定向?我需要以不同方式實施我的服務,還是根本不實行?我不想在每個操作中手動調用此方法。從Symfony中的服務重定向
相關代碼:
// Every other controller in my bundle extends this one
class Controller extends SymfonyController
{
public function setContainer(ContainerInterface $container = null)
{
parent::setContainer($container);
$this->containerInitialized();
}
protected function containerInitialized()
{
// Initialize my.service before running action of every page
try {
$this->get('my.service');
} catch (SomeException $ex) {
// I want redirection to happen here
}
}
}
編輯:我知道我可以使用控制器內核事件,使一些每一頁,這就是我要使用上運行。儘管如此,這仍然不能解決重定向的問題。
我會創建一個自定義的'RedirectException',你可以在你的服務中拋出,捕獲控制器。自定義異常類應該包含重定向的url。 – jszobody
@jszobody我將如何從控制器實際執行此重定向?在這一點上,我們再次沒有采取行動。 – Villermen
http://stackoverflow.com/questions/21576425/symfony2-redirect-in-constructor – jszobody