2011-10-28 13 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にエスケープされます。

あなたは2つのオプションがあります。

imageメソッドは、パラメータとしてurlを取ることができます。

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

か、linkメソッドを使用して(どこでtitleidclassなどを設定することができます)3番目のパラメータには、エスケープ

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

+1は私が以前に気づいたことのなかった 'url'オプションであり、それは実際に書き込むコードが少なくて済むことを意味する – nIcO

関連する問題