条件路由在Symfony 4中

时间:2019-02-14 10:11:55

标签: symfony routing request symfony-4.2

使用Symfony杰出人物留下的文档,我想在传递特定查询字符串时匹配一条路由。我已经调试了它到死,但是似乎它不是要以这种方式工作,尽管我无法解释,但是应该从docs开始工作。

简而言之,我想通过PHP注释将路由与条件匹配。当然,这需要我启用注释和“表达式语言”组件。一切都很正常,但是当我在EL( E xpression L anguage)中使用请求对象的query部分时,它将无法正常工作。

HttpFoundation请求对象为as follows。显然将“查询”声明为属性,因此具有query.has('key')query.get('key') == 'value'。尽管查询为空,但它同时具有context.request.的这种语言。当我编辑缓存时,该行显然具有queryParams: "v=test"。以下内容应该没有任何问题,但无济于事。

/** @Route("/test", name="testcondition", condition="request.query.has('v') and request.query.get('v') == 'test'")

没有雪茄。删除条件部分,它工作正常。留下.has支票,由于它是空的,因此它停止工作。

我在做什么错?我完全是最新的。

symfony/routing                     v4.2.3  Symfony Routing Component
symfony/http-foundation             v4.2.3  Symfony HttpFoundation Component
symfony/http-kernel                 v4.2.3  Symfony HttpKernel Component
symfony/expression-language         v4.2.3  Symfony ExpressionLanguage Component
sensio/framework-extra-bundle       v5.2.4  This bundle provides a way to configure your controllers with annotations

  Symfony
  Version                 4.2.3
  End of maintenance      07/2019
  End of life             01/2020

1 个答案:

答案 0 :(得分:0)

可以请您尝试 /** @Route("/test", name="testcondition", condition="request.query.has('v') and request.query.get('v') == 'test'")相反,我认为这是报价问题