Возможно ли, чтобы 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}) }}