Symfony path twig 函数中的编码参数

Encoding parameters in Symfony path twig function

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

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

在某些情况下,给定值 p 包含斜杠,Symfony 会失败并显示错误:

"Parameter "p" for route "r" must match "[^/]++" (".../..." given) to generate a corresponding URL.")

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

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

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

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

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

显然 Symfony 不会自动 URL 解码这个值 $p,这也是我所期望的。

我是不是做错了什么,还是真的有必要自己处理URL encoding/decoding?在 Symfony 文档中,我根本找不到任何关于此的详细信息。

显然默认参数限制不允许正斜杠。在 "loosening" 他们之后成功了:

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