怀疑Symfony2路由组件的使用情况

时间:2015-05-14 20:38:36

标签: php symfony fosrestbundle symfony-routing

我正在设置FOSRestBundle并有一些疑问,不知道是否与Symfony2路由组件相关或者可以以任何其他方式完成。这里,

1)在执行方法之前,如何检查请求标头上是否设置了X-PDONE-SESSION-ID?可以使用路由注释来完成吗?关于如何检查的任何想法?

2)我需要在路由\b(?:(?:https?):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]中使用此RegEx requirements作为@QueryParam(name="token", requirements="")来检查有效网址,具体如何?

我已阅读herehere,但根本没有帮助。

1 个答案:

答案 0 :(得分:1)

(1)可以使用the book article you referenced as not being helpful

中描述的方法完成
  

正如您所见,可以使路由仅匹配某些路由通配符(通过正则表达式),HTTP方法或主机名。但是使用条件可以扩展路由系统以获得几乎无限的灵活性:

     

接触:          路径:/ contact          默认值:{_ console:AcmeDemoBundle:Main:contact}          条件:" context.getMethod()在[' GET',' HEAD']和request.headers.get(' User-Agent')匹配' /火狐/ I'"

     

条件是一个表达式,您可以在此处了解有关其语法的更多信息:The Expression Syntax。这样,除非HTTP方法是GET或HEAD,并且User-Agent标题与firefox匹配,否则路由不会匹配。

在(2)中,您显示完整URL的正则表达式而不仅仅是查询参数。据我所知,默认情况下无法更改路由组件使用的整个正则表达式。