1
我一直在看Symfony2代碼,我無法弄清楚它是如何計算出正確的控制器使用,而無需擴展/覆蓋ControllerResolver類的功能。我不認爲默認ControllerResolver能夠找到類似BundleName:Bundle:action的控制器的控制器。Symfony2如何在不擴展ControllerResolver的情況下找到正確的控制器?
我一直在看Symfony2代碼,我無法弄清楚它是如何計算出正確的控制器使用,而無需擴展/覆蓋ControllerResolver類的功能。我不認爲默認ControllerResolver能夠找到類似BundleName:Bundle:action的控制器的控制器。Symfony2如何在不擴展ControllerResolver的情況下找到正確的控制器?
控制器在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()));
}
一旦控制器解決,控制器類將出現在請求
你看看Symfony的\包\ FrameworkBundle \控制器\ ControllerNameParser的__controller財產? – greg0ire 2012-04-17 08:45:45
而路由中定義的是BundleName:Controller:action – AlterPHP 2012-04-17 09:28:10
哦,是的,ControllerNameParser是我正在尋找的。 – Rain 2012-04-18 08:58:47