【发布时间】:2015-03-26 12:40:56
【问题描述】:
目前,我正在尝试实现一些通往 symfony 2.5 的路线,这会导致我遇到一个小问题。我需要一个 url 方案,该方案根据自定义服务具有相同的路由。
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 路径:/germany/restaurants
- 尝试匹配路由 1
- “isCategory”返回真,所以这条路线匹配
给定 URL 路径:/germany/aldi
- 尝试匹配路由 1
- “isCategory”返回false,所以我们跳过这条路线
- 尝试匹配路由 2
- “isMerchant”返回true,所以这条路由匹配,我们执行MerchantController
给定 URL 路径:/germany/this-does-not-match-anything
- 尝试匹配路由 1
- “isCategory”返回false,所以我们跳过这条路线
- 尝试匹配路由 2
- "isMerchant" 返回 false,所以我们跳过这条路线
- ...现在我们可以在没有路由匹配时执行默认行为
我认为,该条件将完全符合我的要求,但我只有 requestContext 和表达式语言中的请求,而不是服务容器。
有谁知道,我如何将服务容器注入到表达式语言中以用于路由目的或其他有助于解决此问题的方法?
提前致谢:-)
【问题讨论】:
-
对 OT 感到抱歉,但您是如何让
service(...)工作的?我正在尝试使用有条件的服务,但我得到的只是The function "service" does not exist around position 1。