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

dna*_*irl 0 controller routes symfony

我正在尝试学习如何使用 Symfony 2.3 框架。我认为这是一个很好的第一个练习,修改Acme\DemoBundle\DemoController::helloaction()为在未输入任何名称时提供默认名称。

这是原文:

/**
 * @Route("/hello/{name}", name="_demo_hello")
 * @Template()
 */
public function helloAction($name)
{
    return array('name' => $name);
}
Run Code Online (Sandbox Code Playgroud)

它适用于像这样的 url localhost/Symfony/web/demo/hello/SOMENAME,但对于像localhost/Symfony/web/demo/hello/SOMENAME/localhost/Symfony/web/demo/hello和 这样的 url 则失败localhost/Symfony/web/demo/hello/

这就是我所做的:

/**
 * @Route("/hello", name="_demo_hello", defaults={"name" = "World"})
 * @Template()
 */
public function helloAction($name)
{
    return array('name' => $name);
}
Run Code Online (Sandbox Code Playgroud)

它适用于和localhost/Symfony/web/demo/hello失败localhost/Symfony/web/demo/hello/SOMENAMElocalhost/Symfony/web/demo/hello/SOMENAME/localhost/Symfony/web/demo/hello/

如何使路由在有或没有名称以及有或没有尾部斜杠的情况下工作?

bpo*_*iss 5

您可以像这样设置默认值:

/**
 * @Route("/hello/", defaults={"name" = "John"})
 * @Route("/hello/{name}", name="_demo_hello")
 * @Template()
 */
public function helloAction($name) { ... }
Run Code Online (Sandbox Code Playgroud)

同样重要的是要知道同一操作可以有多个路线,因此无需重复操作。

请参阅文档:http ://symfony.com/doc/2.2/book/controller.html以及:@Route Documentation

/我认为如果您在路线后附加 a ,您的解决方案也应该有效/hello