2011-10-28 61 views
0

我正在生成圖像的縮略圖,我想使用縮略圖作爲鏈接。我有以下代碼爲什麼尖括號在我的鏈接中被轉義?

$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標籤的尖括號被轉義。我究竟做錯了什麼?

回答

6

出於安全原因,使用link方法時,默認情況下,類似的HTML實體在title中被轉義。

你有兩個選擇:

image方法可以採取url作爲參數。

echo $this->Html->image('thumbs/' . $img, array('url'=> 
               array('controller'=>'images', 
                'action'=>'view', 
                 $image['Image']['id']) 
               ) 
         ); 

或可以使用link方法和關閉逸出,在第三參數(在這裏可以設置titleidclass等)

echo $this->Html->link($this->Html->image("thumbs/".$img), 
         array('controller'=>'images', 
           'action'=>'view', $image['Image']['id']), 
         array('escape'=>false, 'class'=>'example') // here 
        ); 
+0

感謝。我知道我錯過了一些簡單的事情。我不能嘗試這個,直到我回家。那麼我會接受它。 – scott

+0

對於我之前從未注意到的'url'選項+1,這意味着更少的代碼來編寫 – nIcO