2013-02-21 7 views
8

私はcakephp 2.3.0を使用しています。マニュアルではしばらく検索しましたが、答えが見つかりませんでした。私は$ this-> Html-> imageと共に$ this-> Html-> linkを使用しようとしています。私はイメージをクリックする能力を作り出そうとしています。引用符のアスキーレンダリングがなぜ生成されているのかについての考えはありますか?ここで

は私のスニペットコードセットは、私の見解のCTPである:

以下
echo $this->html->tableCells(
     array(
      array(
       array (
        $this->Html->link($myActivity['Activity']['name'], array('controller' => 'users', 'action' => 'edit'), array('title' => '')), 
          array('align' => 'left')), 
        array ($myActivity['Activity']['status'], array('align' => 'left')), 
        array ($myActivity['Activity']['any_messages'], array('align' => 'left')), 
        $date2, 
        array ($this->Html->link(
          $this->Html->image('pencil.jpg', array('alt' => 'Edit', 'border' => '0', 'width' => '25')), 
          array('controller' => 'users', 'action' => 'add'), array('title' => '')) 
        ), 
        $this->Html->image('trashcan.jpg', array('alt' => 'Delete', 'border' => '0', 'width' => '25')), 
        $this->Html->image('copy.png', array('alt' => 'Copy', 'border' => '0', 'width' => '25')), 
      ) 
     ) 
    ); 

は、上記のコードの実際のHTML結果です。

<tr> 
    <td align="left"> 
     <a href="/activities/index.php/users/add" title="">Running</a> 
    </td> 
    <td align="left">Live</td> 
    <td align="left">no</td> 
    <td>02/18/13</td> 
    <td> 
     <a href="/activities/index.php/users/edit" title=""> 
      <img src="/activities/app/webroot/img/pencil.jpg" alt="Edit" border="0" width="25"></a> 
    </td> 
    <td> 
     <img src="/activities/app/webroot/img/trashcan.jpg" alt="Delete" border="0" width="25"> 
    </td> 
</tr> 

以下
<tr> 
    <td align="left"> 
     <a href="/activities/index.php/users/add" title="">Running</a> 
    </td> 
    <td align="left">Live</td> 
    <td align="left">no</td> 
    <td>02/18/13</td> 
    <td> 
     <a href="/activities/index.php/users/edit" title="">&lt;img src=&quot;/activities/app/webroot/img/pencil.jpg&quot; alt=&quot;Edit&quot; border=&quot;0&quot; width=&quot;25&quot; /&gt;</a> 
    </td> 
    <td> 
     <img src="/activities/app/webroot/img/trashcan.jpg" alt="Delete" border="0" width="25"> 
    </td> 
</tr> 

私はHTMLのように見えることを期待するものです:あなたが見ることができるように、生成されたHTMLは、ASCII引用符( ")のバージョンと『<』と『>』見せています。あなたのlink()通話のオプション配列にescapeオプションを追加する必要があり、このように、falseに設定し

+0

完全なd何千もの人が集まっています(サイドバーを参照してください) – mark

答えて

21

echo $this->Html->link(
    $this->Html->image('mydog.jpg'), '/lol.html', array('escape' => false) 
); 
+0

恐ろしく、これは簡単な修正だと分かっていました。私は時間があるとき、私はそれを今日後で試してみましょう。マットありがとう。 – Kevin

+0

なぜエスケープオプションを追加する必要がありますか? – Jonathan

+0

@defaye 'false'に設定しないと、リンクの内容がエスケープされます。 '>'は '>'などになります。つまり、リンク内のHTMLは機能しません。 –

0

はこれを試してみてください:

echo $this->Html->link('', array(
    'controller' => 'Mycont', 
    'action'  => 'deletepic', 
    $id 
), array(
    'confirm' => 'Are you sure you want to delete the image?', 
    'class'  => 'deleteImg' 
)); 

私はクラスdeleteImgに画像をリンクしています。

1

はいイメージをアンカータグとして作成することは可能です。 あなたは以下のようにそれのために=エスケープを設定する偽必要があります -

<?php 
$thumb_img = $this->Html->image('yourimage.png',array('alt'=>'yoursite.com','class'=>'yourclass')); 

echo $this->Html->link($thumb_img, array('controller'=>'yourcontroller','action'=>'youraction'), array('escape'=>false)); 

?> 
+0

回答版ありがとうございます。 –

1
echo $this->Html->image('imagename',array('alt'=>'myimage','class'=>'img-responsive')); 

これは今、どのリンクなし通常画像でリンクタグを使用して、それをラップする

echo $this->Html->link($this->Html->image('imagename',array('alt'=>'myimage', 'title'=>'myimage','class'=>'img-responsive')), [ 
         'controller' => 'controllerName', 
         'action'  => 'actionName', 
         'id'   => $value['id'], //if any parameters are passed 
         ],['escape' => false]); 

同様に、イメージタグを変数に割り当てて使用することができます。

$myImageVar = $this->Html->image('imagename',array('alt'=>'myimage','class'=>'img-responsive')); 

echo $this->Html->link($myImageVar, [ 
          'controller' => 'controllerName', 
          'action'  => 'actionName', 
          'id'   => $value['id'], //if any parameters are passed 
          ],['escape' => false]); 
関連する問題