我認爲你應該使用一個EventListener
捕獲錯誤並返回正確的響應。
您可以將它放在您的SomethingBundle/EventListener
文件夾中,並且您還需要定義一個service
以便由Symfony加載。
更多信息:Event Listener
我希望我幫助你,如果你覺得我可能是錯的,讓我知道。祝你好運!
public function onKernelException(GetResponseForExceptionEvent $event)
{
$request = $event->getRequest();
if($this->getBundle($request) == "Something" && $this->getController($request) == "Webservice")
{
// Do your magic
//...
}
}
private function getBundle(Request $request)
{
$pattern = "#([a-zA-Z]*)Bundle#";
$matches = array();
preg_match($pattern, $request->get('_controller'), $matches);
return (count($matches)) ? $matches[0] : null;
}
private function getController(Request $request)
{
$pattern = "#Controller\\\([a-zA-Z]*)Controller#";
$matches = array();
preg_match($pattern, $request->get('_controller'), $matches);
return (count($matches)) ? $matches[1] : null;
}
:
編輯
如果你只是想趕上一個特定的控制器內的錯誤(例如)一個名爲Webservice
控制器在SomethingBundle
裏面,你必須在做任何事情之前檢查危險這段代碼沒有經過測試,只是一種爲您構建自己的代碼的方法。但是,如果我有什麼問題,告訴我。我想保持我的例子清潔。
是的!這是一個好主意,但我怎麼才能使用這個eventlistener來捕捉異常只爲我的控制器(我的web服務控制器)? –
我在幾個月前做過類似的事情。讓我檢查我的代碼並給你一個例子。我會編輯我的答案。 –
非常感謝,這就是我一直在尋找的:) –