web-dev-qa-db-ja.com

symfony2は、正規表現を使用した単一のコントローラーアクションに複数のURLパターンを使用します

Symfony2を使用して、正規表現を使用して単一のコントローラーアクションに複数のURLパターンを定義できるので、複数のルールを定義する必要はありませんか?前もって感謝します

14
svassr

要件のあるプレースホルダーを意味しますか?

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+
15
ilanco

注釈を使用する場合、複数のルートを定義できます。そのように:

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

}

バージョン2.0.9を使用しています

32
mbo

パラメータを使用したルートの注釈の例:

/**
 * @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)
{ ... }

次に、次のようにtwigでルートを生成します:

{{ path('shops_town') }}

または

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

または

{{ path('shops_department', {'department': department.id}) }}
10
Jean-Luc Barat