Symfony路径分支函数中的编码参数



在我的应用程序中,我使用Symfony Twig扩展函数path创建到另一个路由的链接。那个路由接受一个参数,所以我写了这样的路径函数:

<a href="{{ path('r', {p: p}) }}">...</a>

在某些情况下,给定的值p包含斜线,Symfony失败并返回错误:

"路由"r"的参数"p"必须匹配"[^/]++"(给定"…/…")才能生成相应的URL。")

我希望Symfony能处理这个问题,并自动对这些值进行URL编码,但显然没有(或者我做错了什么)。

无论如何,我设法用url_encodeTwig过滤器解决了这个问题,就像这样:

<a href="{{ path('r', {p: p|url_encode}) }}">...</a>

现在在我的控制器中,我接受这样的参数:

/**
* @Route("/a/b/{p}", name="r")
**/
public function someAction($p) {
// ...
}

显然,Symfony并没有自动对这个值$p进行URL解码,这也是我所期望的。

我是不是做错了什么,还是真的有必要自己处理URL编码/解码?在Symfony的文档中,我根本找不到任何关于这方面的细节。

显然,默认参数限制不允许正向斜杠。在"放松"它们之后,它起了作用:

/**
* @Route("/a/b/{p}", name="r", requirements={"diagramResourceId"=".+"})
**/
public function someAction($p) {
// ...
}

最新更新