2013-02-21 15 views
8

Tôi đang sử dụng cakephp 2.3.0. Tôi đã tìm kiếm trong hướng dẫn sử dụng trong một thời gian, nhưng tôi đã không tìm thấy câu trả lời. Tôi đang cố gắng sử dụng $ this-> Html-> link, cùng với $ this-> Html-> image. Tôi đang cố gắng tạo khả năng nhấp vào hình ảnh. Bất kỳ ý tưởng nào về lý do tại sao ascii render các trích dẫn đang được tạo ra?

Dưới đây là đoạn mã của tôi codeset theo quan điểm của tôi 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')), 
      ) 
     ) 
    ); 

Dưới đây là HTML kết quả thực tế của các mã trên. Như bạn có thể thấy, HTML được tạo đang hiển thị phiên bản ascii của dấu ngoặc kép (") và '<' và '>':

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

Dưới đây là những gì tôi mong chờ HTML để trông giống như:

<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

complete d làm lộn xộn ngàn người khác (xem thanh bên) – mark

Trả lời

21

bạn cần phải thêm tùy chọn escape đến các mảng tùy chọn của link() cuộc gọi của bạn Đặt nó vào false, như thế này:.

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

Tuyệt vời, tôi biết điều này sẽ là một sửa chữa dễ dàng. Tôi sẽ thử sau ngày hôm nay khi tôi có thời gian. Cảm ơn Matt. – Kevin

+0

Tại sao bạn phải thêm tùy chọn thoát? – Jonathan

+0

@defaye Nếu bạn không đặt thành 'false' thì nội dung của liên kết sẽ được thoát, ví dụ: '>' sẽ trở thành '>' và v.v., có nghĩa là HTML bên trong liên kết của bạn sẽ không hoạt động. –

0

Hãy thử điều này:

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

Tôi đã liên kết hình ảnh trong lớp học deleteImg.

1

Có thể tạo hình ảnh làm thẻ liên kết. Bạn chỉ cần thiết lập thoát = false cho nó như dưới đây: -

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

Cảm ơn bạn đã trả lời phiên bản Sir :) –

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

Đây là bình thường hình ảnh mà không cần bất kỳ liên kết, bây giờ để bọc nó với liên kết thẻ sử dụng

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

Tương tự, bạn có thể chỉ định thẻ hình ảnh cho một biến và sử dụng thẻ hình ảnh đó cho một biến số và sử dụng nó

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