2013-02-21 6 views
8

Ich benutze CakePHP 2.3.0. Ich habe lange im Handbuch gesucht, aber ich habe die Antwort nicht gefunden. Ich versuche $ this-> Html-> link, zusammen mit $ this-> Html-> image. Ich versuche, die Fähigkeit zu erstellen, auf ein Bild zu klicken. Irgendwelche Ideen, warum das ASCII-Rendering von Zitaten generiert wird?

Hier ist mein Code-Schnipsel aus meiner Sicht ctp CODESET:

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')), 
      ) 
     ) 
    ); 

Im Folgenden finden Sie das aktuelle HTML-Ergebnis des Codes oben. Wie Sie sehen können, wird die erzeugte HTML zeigt ascii-Version von Anführungszeichen (") und '<' und '>':

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

unten, was ich die HTML erwarten wie folgt aussehen:

<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> 
+0

abgeschlossen d Tausende von anderen (siehe die Seitenleiste) – mark

Antwort

21

Sie müssen die escape Option auf die Optionen Array Ihrer link() Anrufe hinzufügen Setzen Sie ihn auf false, wie folgt aus:.

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

Ehrfürchtig, ich wusste, dass dies eine einfache Lösung wäre. Ich werde es später versuchen, wenn ich Zeit habe. Danke, Matt. – Kevin

+0

Warum müssen Sie die Escape-Option hinzufügen? – Jonathan

+0

@defaye Wenn Sie es nicht auf 'false' setzen, wird der Inhalt des Links maskiert, z. '>' wird '>' und usw., was bedeutet, dass HTML in Ihrem Link nicht funktioniert. –

0

Versuchen Sie diese:

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

Ich habe Bild in Klasse deleteImg verknüpft.

1

Ja Es ist möglich, ein Bild als Anker-Tag zu erstellen. Sie muss nur dafür Escape = false gesetzt wie folgt: -

<?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

Danke für Antwort Ausgabe Sir :) –

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

Dies ist normale Bild ohne Link, jetzt ist es zu wickeln mit Link-Tag Verwendung

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]); 

Auf ähnliche Weise können Sie das Bild-Tag einer Variablen zuweisen und es verwenden

$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]); 
Verwandte Themen