为什么尖括号在我的链接中被转义?

时间:2011-10-28 10:52:22

标签: php cakephp

我正在生成图片的缩略图,我想将缩略图用作链接。我有以下代码

$img = $thumbnail->show($options, $tag_options);
echo $this->Html->image("thumbs/".$img);
echo $this->Html->link($this->Html->image("thumbs/".$img),array('controller'=>'images', 'action'=>'view', $image['Image']['id']));

第一个echo语句正常工作并显示图像。第二个显示一个看起来像这样的链接

<img src="/app/webroot/img/thumbs/fa741043357d4bf1ca39a58edf351d2a.JPG" alt="" />

现在该链接正常工作,因为它占用了该图像的视图页面,但它没有像我期望的那样显示图像。当我查看页面源时,链接如下所示:

<a href="/index.php/images/view/9">&lt;img src=&quot;/app/webroot/img/thumbs/fa741043357d4bf1ca39a58edf351d2a.JPG&quot; alt=&quot;&quot; /&gt;</a>

我注意到img标签上的尖括号被转义了。我做错了什么?

1 个答案:

答案 0 :(得分:6)

出于安全原因,默认情况下,使用title方法时,link中的HTML实体会在image中进行转义。

您有两种选择:

url方法可以将echo $this->Html->image('thumbs/' . $img, array('url'=> array('controller'=>'images', 'action'=>'view', $image['Image']['id']) ) ); 作为参数。

link

或者您可以使用title方法并关闭转义,在第3个参数中(您可以设置idclassecho $this->Html->link($this->Html->image("thumbs/".$img), array('controller'=>'images', 'action'=>'view', $image['Image']['id']), array('escape'=>false, 'class'=>'example') // here ); 等)

{{1}}