使用前缀时,Symfony路由参数不工作


Symfony Route parameters not working when prefix is used

当我使用这个配置时:

#/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/不加载在这种情况下,我怎么能解决这个问题?

这是正确的,您可以加载/hello。这不是一个需要修复的错误。

使用硬编码的URL不是一个好的做法。应该使用生成的url。

从控制器生成URL使用:

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

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

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

如果你想同时处理两个url,你可以使用这个食谱