使用前缀时,Symfony Route参数不起作用

时间:2014-03-30 14:56:00

标签: php symfony routing yaml

当我使用此配置时:

#/app/config/routing.yml
_org_demo:
    resource: "@OrgDemoBundle/config/routing.yml"

#Org/DemoBundle/config/routing.yml
_home:
    path: /{name}
    defaults: { _controller: OrgDemoBundle:Home:index, name: world}

//xyz都可以正常加载。  但是,当我使用新配置时

#/app/config/routing.yml
_org_demo:
    resource: "@OrgDemoBundle/config/routing.yml"
    prefix: /hello

#Org/DemoBundle/config/routing.yml
_home:
    path: /{name}
    defaults: { _controller: OrgDemoBundle:Home:index, name: world}

在这种情况下/hello/xyz加载但不加/hello/,我收到错误No route found for "GET /hello/"。为什么/hello/在这种情况下无法加载?如何解决此问题?

1 个答案:

答案 0 :(得分:2)

这是正确的你可以加载/hello。修复不是错误。

使用硬编码的URL不是一个好习惯。您应该使用生成的URL。

从控制器USE生成URL:

$this->generateUrl('_home');   //Will return /helo
$this->generateUrl('_home', array('name' => 'Bangladesh')) // will return /hello/Bangladesh

在twig模板上,您可以使用它们来获得类似的输出:

{{ path('_home') }}
{{ path('_home', {name: 'Bangladesh' }) }}

如果您想处理这两个网址,可以使用this cookbook