设置Symfony控制器操作的默认值

时间:2013-06-05 18:18:36

标签: symfony controller routes

我正在尝试学习如何使用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/hellolocalhost/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/SOMENAMElocalhost/Symfony/web/demo/hello/SOMENAME/localhost/Symfony/web/demo/hello/

失败

如何使用和不使用名称以及使用和不使用尾部斜杠来使路由工作?

1 个答案:

答案 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,您的解决方案也会有效。