0

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

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

4

1 回答 1

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 文档

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

于 2013-06-05T18:20:53.957 回答