symfony2路由上的前缀变量

Noq*_*qui 8 routing symfony

我的symfony2路由上的前缀需要一个变量,以便我可以在主路由文件中执行以下操作:

//app/config/routing.yml
god:
    resource: "@Acme/DemoBundle/Resources/config/routing.yml"
    prefix: /god/{religion}
Run Code Online (Sandbox Code Playgroud)

然后在捆绑路由文件中这样的事情:

gods_route_to_heaven:
    path: /path_to_heaven
    defaults: { _controller: AcmeBlogBundle:God:show }
Run Code Online (Sandbox Code Playgroud)

这样我就可以访问这样的路径了:

/god/Christianity/path_to_heaven
/god/Islam/path_to_heaven
/god/Hinduism/path_to_heaven
Run Code Online (Sandbox Code Playgroud)

等等.

如果我app/console route:debug | grep api在控制台上键入,我会得到正确的路由/god/{religion}/path_to_heaven,因此正确生成路由.

但是当我尝试通过将它作为输入放在动作函数中来获取控制器中的参数时,如下所示:

public function showAction($religion)
Run Code Online (Sandbox Code Playgroud)

路径被破坏并转储路径我看到它重复: /god/{religion}/path_to_heaven/{religion}

那么我如何从控制器内部获取$ religion变量?

Dan*_*cas 4

你试过这个吗?

//app/config/routing.yml
god:
    resource: "@Acme/DemoBundle/Resources/config/routing.yml"
    prefix: /god
Run Code Online (Sandbox Code Playgroud)

然后在捆绑路由文件中类似这样的内容:

gods_route_to_heaven:
    path: /{religion}/path_to_heaven
    defaults: { _controller: AcmeBlogBundle:God:show }
Run Code Online (Sandbox Code Playgroud)

让我知道它是否有效。

  • 是的,这是可行的,但我试图避免必须将 {religion} 占位符放在 /god 下的每条路线中...想象一下,我在 /god 下有 100 条路线,我必须为每条路线添加 {religion} 占位符。如果我将其添加到前缀中,我只会添加一次。 (6认同)