我正在学习symfony书,我读过我可以省略控制器中的参数(http://symfony.com/doc/2.3/book/controller.html#route-parameters-as-controller-arguments)
我尝试过这种配置
我的路线
_demo:
path: /{lastName}
defaults: { _controller: AcmeDemoBundle:Demo:index}
和我的控制器
public function indexAction(){
return $this->render('AcmeDemoBundle:Demo:index.html.twig');
}
当我访问没有参数的路线(lastName)
时http://localhost:8000/app_dev.php/
我收到此错误
No route found for "GET /"
但是在symfony书中我可以读到:
并非所有路由参数都需要是控制器上的参数
例如,如果lastName对您的控制器不重要, 你可以完全省略它:
我正在使用symfony 2.3 非常感谢!
答案 0 :(得分:2)
现在您没有/
的路线,但是路线的参数为/{param}
如果你访问
http://localhost:8000/app_dev.php/foo
你可以获得这条路线,你可以在控制器中省略参数
public function indexAction()
{
return $this->render('AcmeDemoBundle:Demo:index.html.twig');
}
您的控制器中的参数是可选的,而不是您的路线。然后,如果您想要/
路由,则必须创建新路由。
E.g
_demo2:
path: /
defaults: { _controller: AcmeDemoBundle:Demo:index2}
您可以使用
查看路线php app/console router:debug
您可以阅读所有路线
答案 1 :(得分:-1)
为了让你的路线从你的控制器点击indexAction,你需要指定lastName
的默认值:
_demo:
path: /{lastName}
defaults: { _controller: AcmeDemoBundle:Demo:index, lastName: null}