Symfony2 использует множественный шаблон url для одного действия контроллера с использованием регулярного выражения

Возможно ли, чтобы symfony2 определял несколько шаблонов url для одного действия контроллера с использованием регулярных выражений, поэтому нам не нужно определять несколько правил? Спасибо заранее

Ответ 1

Вы имеете в виду заполнители с требованиями?

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

Здесь у вас есть несколько маршрутов, определяемых заполнителем, проверенные регулярными выражениями, идущими к одному и тому же действию контроллера.

Edit:

Каждая часть URL-адреса может быть заполнителем.

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

Ответ 2

При использовании аннотаций вы можете определить несколько маршрутов. Например:

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

}

Я использую версию 2.0.9

Ответ 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}) }}