Symfony маршрутизация, чтобы различать неоднозначные пути - PullRequest
0 голосов
/ 07 мая 2019

У меня проблема с маршрутизацией Symfony.Несмотря на то, что я использую разные параметры для путей двух разных маршрутов, Symfony идентифицирует их как единый шаблон и указывает путь, который определен первым в файле маршрутизации.Например:

app_restaurants_inner:
    path:     /london-restaurants/{id}/{restaurant_name}.html
    defaults: { _controller: AppBundle:Restaurants:inner}

app_restaurants_by_cuisine:
    path:     /london-restaurants/cuisine/{cuisine}.html
    defaults: { _controller: AppBundle:Restaurants:index}

Первый маршрут загружает определенный ресторан, а параметры - это идентификатор и название ресторана.Названия ресторанов содержат только az, 0-9 и дефисы.Во втором есть только один параметр - кухня.Но когда я пытаюсь загрузить кухню (2-й маршрут), она направляет меня к ресторанной дорожке, которая похожа на кухню.

С другой стороны, следующий маршрут также идентифицирован как путь ресторана.

app_restaurants_by_cuisine_letter:
    path:     /london-restaurants/cuisine/{cuisine}-{letter}.html
    defaults: { _controller: AppBundle:Restaurants:index}

Слово «кухня» обозначается как «{id}» и «{кухня} -{letter} 'идентифицируется как' {restaurant_name} '.

Как я могу это исправить?

1 Ответ

3 голосов
/ 07 мая 2019

Вы должны добавить некоторые требования в определения вашего маршрута. Добавление {подстановочных знаков} требований

app_restaurants_inner:
    path:     /london-restaurants/{id}/{restaurant_name}.html
    defaults: { _controller: AppBundle:Restaurants:inner}
    requirements:
        id: '\d+'

app_restaurants_by_cuisine:
    path:     /london-restaurants/cuisine/{cuisine}.html
    defaults: { _controller: AppBundle:Restaurants:index}
...