我正在尝试学习如何使用Symfony 2.3框架。我认为修改Acme\DemoBundle\DemoController::helloaction()
以在没有输入时提供默认名称是一个很好的第一个练习。
这是原作:
/**
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name)
{
return array('name' => $name);
}
适用于localhost/Symfony/web/demo/hello/SOMENAME
等网址,但未使用localhost/Symfony/web/demo/hello/SOMENAME/
,localhost/Symfony/web/demo/hello
和localhost/Symfony/web/demo/hello/
等网址
这就是我所做的:
/**
* @Route("/hello", name="_demo_hello", defaults={"name" = "World"})
* @Template()
*/
public function helloAction($name)
{
return array('name' => $name);
}
适用于localhost/Symfony/web/demo/hello
,但localhost/Symfony/web/demo/hello/SOMENAME
,localhost/Symfony/web/demo/hello/SOMENAME/
和localhost/Symfony/web/demo/hello/
如何使用和不使用名称以及使用和不使用尾部斜杠来使路由工作?
答案 0 :(得分:4)
您可以设置如下默认值:
/**
* @Route("/hello/", defaults={"name" = "John"})
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name) { ... }
了解您可以在同一操作上拥有多条路线也很重要,因此无需复制操作。
请参阅文档:http://symfony.com/doc/2.2/book/controller.html并且:@Route Documentation
我认为如果您在路线/
之后添加/hello
,您的解决方案也会有效。