2012-04-17 134 views
1

我一直在看Symfony2代碼,我無法弄清楚它是如何計算出正確的控制器使用,而無需擴展/覆蓋ControllerResolver類的功能。我不認爲默認ControllerResolver能夠找到類似BundleName:Bundle:action的控制器的控制器。Symfony2如何在不擴展ControllerResolver的情況下找到正確的控制器?

+2

你看看Symfony的\包\ FrameworkBundle \控制器\ ControllerNameParser的__controller財產? – greg0ire 2012-04-17 08:45:45

+0

而路由中定義的是BundleName:Controller:action – AlterPHP 2012-04-17 09:28:10

+0

哦,是的,ControllerNameParser是我正在尋找的。 – Rain 2012-04-18 08:58:47

回答

0

控制器在HTTPKernel類中解析(https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/HttpKernel.php)。這是發生了什麼有

// load controller 
    if (false === $controller = $this->resolver->getController($request)) { 
     throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". Maybe you forgot to add the matching route in your routing configuration?', $request->getPathInfo())); 
    } 

一旦控制器解決,控制器類將出現在請求

相關問題