2012-04-17 139 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())); 
    } 

一旦控制器解决,控制器类将出现在请求

相关问题