2015-08-09 3 views
0

У меня есть подобные маршруты, Symfony2 вызов второго маршрут (подкатегория), если я тип somethinkg как «example.com/cars/insert/.Symfony2/Подобные маршруты

web_portal_category: 
path:  /{category}/ 
defaults: { _controller: WebPortalBundle:Default:category } 

web_portal_subcategory: 
path:  /{category}/{subcategory}/ 
defaults: { _controller: WebPortalBundle:Default:subcategory } 

web_portal_insert: 
path:  /{category}/insert/ 
defaults: { _controller: WebPortalBundle:Default:upload } 

Как я могу заставить их называть право ? один

ответ

0

это правильно Symfony читает të маршруты из верхней снизу и берет первый маршрут, который соответствует. В вашем примере URL авто/вставка/ соответствует второму и третьему маршруту. Поскольку второй маршрут имеет только переменные {категорию} & {подкатегория} все URLs х/у/ будет соответствовать и третьему маршруту никогда не будет достигнут.

если вы поменяете второй и третий маршруты, как это изменится.

web_portal_category: 
path:  /{category}/ 
defaults: { _controller: WebPortalBundle:Default:category } 

web_portal_insert: 
path:  /{category}/insert/ 
defaults: { _controller: WebPortalBundle:Default:upload } 

web_portal_subcategory: 
path:  /{category}/{subcategory}/ 
defaults: { _controller: WebPortalBundle:Default:subcategory } 

В этом случае только /х/вставить URL будет соответствовать второму маршруту и ​​всем остальные будут продолжать с третьим маршрутом в строке.

+0

Вы также можете использовать 'требования: подкатегорию:"^((! Insert). *) $ "' (Совпадение всего, кроме «insert») в 'web_portal_subcategory', но это будет чрезмерно затруднять вещи. – qooplmao

1

Вы помещаете их в правильном порядке, потому что, как только он находит совпадение, компонент маршрутизации остановится и выполнить это действие:.

web_portal_insert: 
path:  /{category}/insert/ 
defaults: { _controller: WebPortalBundle:Default:upload } 

web_portal_subcategory: 
path:  /{category}/{subcategory}/ 
defaults: { _controller: WebPortalBundle:Default:subcategory } 

web_portal_category: 
path:  /{category}/ 
defaults: { _controller: WebPortalBundle:Default:category } 
Смежные вопросы