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

Я хочу, чтобы все эти URL-адреса соответствовали одному и тому же контроллеру:

/
/7
/articles
/articles/
/articles/7

Можно ли добавить необязательный prefix в роутинг Symfony, чтобы префикс article был необязательным?
Как?


person Ariyan    schedule 01.01.2014    source источник
comment
Удалил мой ответ, так как это не работает. Просто попробуйте дублировать маршруты.   -  person mhitza    schedule 01.01.2014
comment
Я бы пересмотрел это, используя несколько совершенно разных маршрутов для одного контроллера, что делает ваше приложение довольно подробным. Я бы решил, что я выберу. И, возможно, добавьте перенаправления к другому, если вам нужно быть BC с вашим предыдущим приложением или около того.   -  person Wouter J    schedule 01.01.2014


Ответы (1)


Вы можете создать 2 маршрута, указывающих на один и тот же контроллер:

acme_article_prefix:
    path: /articles/{id}
    requirements:
        id: \d+
    defaults: { id: 5 }

acme_article:
    path: /{id}
    requirements:
        id: \d+
    defaults: { id: 5 }

Другой вариант — сделать префикс заполнителем:

acme_article:
    path: /{_prefix}/{id}
    defaults: { _prefix: articles, id: 5 }
    requirements:
        id: \d+
        _prefix: articles

для фреймворка давно есть патч для реализации роутов типа /(articles/){id}, которые будут совпадать с заданными вами выше urks.

person Wouter J    schedule 01.01.2014
comment
/(articles/){id} не работает; но использование двух маршрутов работает, спасибо - person Ariyan; 01.01.2014
comment
@ 4r1y4n это будет работать в будущем :) (поэтому я сказал, что есть патч, он еще не реализован) - person Wouter J; 01.01.2014