单个符号路由中的多个模式

2022-08-30 15:31:16

如何在单个Symfony路由中制作多个模式?

通常,我们有一个路由

blog:
    pattern:   /
    defaults:  { _controller: AcmeBlogBundle:Blog:index, page: 1 }

是否可以有两种路由模式?

类似的东西

blog:
    #Below pattern to match with '/' or '/index'    
    pattern:   {/ , /index}  
    defaults:  { _controller: AcmeBlogBundle:Blog:index, page: 1 }

答案 1

你使用的是Symfony2吗?如果您现在并且可以使用注释作为路由而不是 yml 或 xml,则可以沿着以下行定义多个路由:

/**
* @Route("/");
* @Route("/home");
*/

然后,您无需复制操作方法。


答案 2

最简单的方法是复制块并创建2条路线。

blog:
    pattern:   /
    defaults:  { _controller: AcmeBlogBundle:Blog:index, page: 1 }

blog_index:
    pattern:   /index
    defaults:  { _controller: AcmeBlogBundle:Blog:index, page: 1 }

因此,如果需要,您可以在路径中同时使用它们。

在这里,您可以看到另一篇帖子 如何在路由中使用正则表达式。也许你可以写一个简单的正则表达式,它检查是否设置了索引

编辑:

如果您使用我更喜欢的注释,则可以通过控制器的 Action 方法编写多个路由。像这样:

/**
* @Route("/");
* @Route("/home");
*/

推荐