В настоящее время я пытаюсь реализовать несколько маршрутов для symfony 2.5, которые приводят меня к небольшой проблеме. Мне нужно иметь схему URL, которая имеет тот же маршрут в зависимости от пользовательской службы.Symfony 2 - Использование пользовательского сервиса в выражении маршрутизации
route_category:
pattern: /{location}/{category}
defaults: { _controller: LocationBundle:Category:index }
condition: "service('location_category_service').isCategory(request.get('category')) == true"
route_merchant:
pattern: /{location}/{merchant}
defaults: { _controller: LocationBundle:Merchant:index }
condition: "service('location_merchant_service').isMerchant(request.get('merchant')) == true"
То, что я хочу Symfony, чтобы сделать это:
Учитывая URL путь: /Германия/рестораны
- соответствия попробовать маршрут 1
- "isCategory" возвращает истину, так что Маршрутные совпадения
Путь к URL: /Германия/Aldi
- соответствия попробовать маршрут 1
- "isCategory" возвращает ложь, поэтому мы пропускаем этот маршрут
- соответствия попробовать маршрут 2
- "isMerchant" возвращает истину, так что этот маршрут соответствует и мы выполняем MerchantController
Учитывая URL путь: /Германия/это-делает-не-матч-нибудь
- соответствия попробовать маршрут 1
- "isCategory" возвращает ложь, поэтому мы пропускаем этот маршрут
- соответствия попробовать маршрут 2
- "isMerchant" возвращает ложь, поэтому мы пропускаем этот маршрут
- .. теперь мы можем выполнить поведение по умолчанию, когда маршрут не соответствует
Я думал, что условие будет точно делать то, что я хочу, но у меня есть запросКонтекст и запрос в язык выражения, а не контейнер обслуживания.
Кто-нибудь знает, как я могу ввести контейнер службы в язык выражений для целей маршрутизации или, возможно, что-то еще, что поможет решить эту проблему?
Заранее спасибо :-)
извините за OT, но как вы получили 'service (...)', чтобы работать? Я пытаюсь использовать сервис в состоянии, но все, что я получаю, это 'Функция« сервис »не существует в позиции 1'. – ex3v