使用CakePHP 2.2,我想在视图中生成以下链接:
<a href="/teams/edit/${$data.Team.id}">Edit</a>
此标记稍后由Javascript模板引擎选取,因此${$data.Team.id}
部分。
这是我明显的第一次尝试:
echo $this->Html->link(
'Edit',
array('controller' => 'teams', 'action'=>'edit', '${$data.Team.id}')
);
结果:
<a href="/teams/edit/%24%7B%24data.Team.id%7D">Edit</a>
$
,{
和}
很好地进行了网址编码 - 这是我不想要的。
好的,但有一个'escape' => false
选项,The Book说。
echo $this->Html->link(
'Edit',
array('controller' => 'teams', 'action'=>'edit', '${$data.Team.id}'),
array('escape' => false)
);
结果不会改变。显然,'escape'
param只会影响URL数组的'?'
键中实际查询字符串的处理。
如何使用HtmlHelper获得所需的结果?
答案 0 :(得分:1)
没有办法实现你想要的。路由器将urlencode所有已命名并传递的参数。您可以使用HtmlHelper::url()
生成/teams/edit/
部分,然后使用简单的字符串连接。
编辑:您可以使用自定义RouteClass并覆盖执行编码的CakeRoute :: _ writeUrl()方法。在url数组中传递一个特殊的参数,告诉它不编码,并取消设置该参数。
答案 1 :(得分:0)
我最终为此创建了自己的帮助程序而没有使用链接帮助程序。在我的助手中,我使用了url helper来生成基本URL,然后我添加了我想要的参数。