Symfony2中使用多个URL模式用于使用正则表达式的单个控制器操作(symfony2 use m

2019-06-24 03:42发布

这有可能与Symfony2中定义多个URL模式使用正则表达式一个控制器动作,所以我们没有办法,制定了规则? 提前致谢

Answer 1:

你的意思是有要求的占位符?

blog:
    pattern:   /blog/{page}
    defaults:  { _controller: AcmeBlogBundle:Blog:index, page: 1 }
    requirements:
        page:  \d+

这里有一个占位符定义多个路由,通过正则表达式去同一个控制器的动作验证。

编辑:

URL的每个部分可以是一个占位符。

blog:
    pattern:   /{type}/{page}
    defaults:  { _controller: AcmeBlogBundle:Blog:index, page: 1 }
    requirements:
        type: blog|articles
        page:  \d+


Answer 2:

当使用注解,你可以定义多个路由。 像那样:

/**
 * @Route ("item1")
 * @Route ("item/2")
 * @Method("GET")
 */
public function itemAction() {

}

我使用的是2.0.9版本



Answer 3:

用于与参数路由注解例如:

/**
 * @Route("/shops/{page}", name="shops")
 * @Route("/shops/town/{town}/{page}", name="shops_town")
 * @Route("/shops/department/{department}/{page}", name="shops_department")
 */
public function shopsAction(Town $town = null, Department $department = null, $page = 1)
{ ... }

于是产生这样的树枝路线:

{{ path('shops_town') }}

要么

{{ path('shops_town', {'town': town.id}) }}

要么

{{ path('shops_department', {'department': department.id}) }}


文章来源: symfony2 use multiple url pattern for a single Controller Action using regular expression