我用下面的方法打印一个转换成字符串的整数变量:
public function __toString(){
return strval($this->id);
}
我打印这个在我的树枝文件,它工作得很好,但我有一个问题,当我的变量被放在一个URL路径,像这样:
<a href="{{ path('profilo_secondlevel', {'uid': user.idUserReferenced}) }}">{{ user.idUserReferenced }}</a>
我的URL是这样看的:
<a href="/app_dev.php/profilo/secondo-livello?uid%5B__isInitialized__%5D=1">73</a>
我读到这个问题,这被称为百分比编码,用于编码URL参数值中的特殊字符。但我希望我的id号在URL…
我该怎么办?
CODE OF routing.yml
################################################################################
# /profile/secondo_livello #
# profilo_secondlevel:
host: "{_locale}.{domain}"
locales: { it: "/profilo/secondo-livello.{_format}", fr: "/profilo/secondo-livello.{_format}", de: "/profilo/secondo-livello.{_format}" }
defaults: { _locale: "%locale%", domain: "%domain%", _format: "html", _controller: DtEcBundle:Profile:secondLevel }
requirements:
_locale: "it|fr|de"
domain: "%domain%"
_format: "html|json"
profilo_secondlevel_www.it:
path: /profilo/secondo-livello/{uid}.{_format}
host: "www.{domain}"
defaults: { _locale: "%locale%", _format: "html", _controller: DtEcBundle:Profile:secondLevel }
requirements:
_locale: "%locale%"
domain: "%domain%"
_format: "html|json"
profilo_secondlevel_nowww.it:
path: /profilo/secondo-livello/{uid}.{_format}
host: "{domain}"
defaults: { _locale: "%locale%", _format: "html", _controller: DtEcBundle:Profile:secondLevel }
requirements:
_locale: "%locale%"
domain: "%domain%"
_format: "html|json"
假设您已经定义了一个服务于profilo_secondlevel
路由的控制器,您将拥有如下路由配置:
app/config/routing.yml
profilo_secondlevel:
host: "{_locale}.{domain}"
path: /profilo/secondo-livello/{uid}.{_format}
defaults: { _locale: "%locale%", domain: "%domain%", _format: "html", _controller: DtEcBundle:Profile:secondLevel }
requirements:
_locale: "it|fr|de"
domain: "%domain%"
_format: "html|json"
那么你可以在你的小枝模板上使用下面的模板代码:
<a href="{{ path('profilo_secondlevel', {'uid': user.idUserReferenced}) }}">
{{ user.idUserReferenced }}
</a>
,结果应该是这样的URL: /profilo/secondo-livello/73.html
.