Handling slashes on URL parameters(处理 URL 参数上的斜杠)
问题描述
I'm running into some issues trying to guess how to handle URLs with parameters on Symfony+Twig.
I have this route:
<route id="artist.front" path="/artist/{kw}/">
<default key="_controller">AppWebControllersFront::homePage</default>
</route>
And this code on the Twig template:
{% autoescape false %}
<a href="{{ path('artist.front',{'kw':a.urlkeyword|url_encode} )}}">{{ a.name }}</a>
{% endautoescape %}
urlkeyword
parameter is passed as is (i.e. not URL encoded previously) both on the entity constructor and on its getter (getURLKeyword).
However, when rendering the template I get this HTML code:
<a href="/index.php/artist/AC%252FDC/">AC/DC</a>
(If I remove the url_encode from the template Twig throws an error calling path()).
The target controller has this code:
public function artistPage($kw)
{
$decoded = urldecode($kw);
$this->log->info("kw: {$kw}");
$this->log->info("decoded: {$decoded}");
}
and echoes:
kw: AC%2FDC
decoded: AC/DC
so I think the kw is read correctly from the controller, but I understand the URL should be encoded as AC%2FDC instead on the final HTML code on the first place: The URLEncoded string is encoded twice.
Is AC%2FDC the correct encoding, or is it necessary to use the double encoding (AC%252FDC) in Symfony? And, if it is possible to use the first (correct) URL encoding, what I am doing wrong?
try:
<route id="artist.front" path="/artist/{kw}/">
<default key="_controller">AppWebControllersFront::homePage</default>
<requirement key="kw">.+</requirement>
</route>
And remove the url encoding/decoding.
这篇关于处理 URL 参数上的斜杠的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:处理 URL 参数上的斜杠


基础教程推荐
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01