2

使用 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>

$, {, 和}很好的 URL 编码 - 我不想要。

好的,但是有一个'escape' => false选择,The Book说。

echo $this->Html->link(
    'Edit',
    array('controller' => 'teams', 'action'=>'edit', '${$data.Team.id}'),
    array('escape' => false)
);

结果不变。显然,参数仅影响URL 数组键中'escape'实际查询字符串的处理。'?'

如何使用 HtmlHelper 达到预期的效果?

4

2 回答 2

1

没有办法达到你想要的。路由器将对所有命名和传递的参数进行urlencode。您可以使用HtmlHelper::url()来生成/teams/edit/零件,然后使用简单的字符串连接。

编辑:您可能可以使用自定义 RouteClass 并覆盖进行编码的 CakeRoute::_writeUrl() 方法。在 url 数组中传递一个特殊的参数来告诉它不编码并取消设置该参数。

于 2013-02-13T14:33:53.237 回答
0

I ended up creating my own helper for this and not using the link helper. In my helper, I used the url helper to generate the base url, then I appended my desired parameters.

于 2013-03-24T03:39:27.743 回答