Подтвердить что ты не робот

Как написать HTML-тег в CakePHP "link"

Я использую CakePHP 2.2 и вам нужно написать следующий код -

<a data-original-title=" Edit " data-placement="left" rel="tooltip" href="/admin/static_pages/edit/1" class="btn btn-small">
  <i class="gicon-edit"></i>
</a>

Я написал следующий код в CakePHP -

 <?php echo $this->Html->link($this->Html->tag('i', '', array('class' => 'gicon-edit')),array('controller'=>'static_pages','action'=>'edit',$page['StaticPage']['id']), array('rel'=>'tooltip','data-placement'=>'left','data-original-title'=>'Edit','class'=>'btn btn-small'));  ?>

и получи следующий результат -

<a class="btn btn-small" data-original-title="Edit" data-placement="left" rel="tooltip" href="/erudites/admin/static_pages/edit/1">&lt;i class="gicon-edit"&gt;&lt;/i&gt;</a>

Как должен быть написан правильный HTML-код?

4b9b3361

Ответ 1

Объяснение:

Добавление опции 'escape'=>false к вашей ссылке делает ее так, что она не пытается перевести ('escape') все ваши html-символы.

Кроме того, я редко (если КОГДА-ЛИБО) считаю полезным использовать CakePHP ->tag(). Просто напишите тег - намного проще (и более эффективно).

Пример кода:

echo $this->Html->link(
   '<i class="gicon-edit"></i>',
    array(
        'controller'=>'static_pages',
        'action'=>'edit',
        $page['StaticPage']['id']
    ),
    array(
        'rel'                 => 'tooltip',
        'data-placement'      => 'left',
        'data-original-title' => 'Edit',
        'class'               => 'btn btn-small',
        'escape'              => false  //NOTICE THIS LINE ***************
    )
);

Подробности здесь: http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::link

PS Очевидно, что код мог бы быть 1-лайнером, если бы вы предпочли - просто сломал его здесь для удобства чтения.

Ответ 2

Вам может быть проще обработать эту ссылку, используя метод url для HTML-помощника: -

<a data-original-title=" Edit " data-placement="left" rel="tooltip" href="<?php echo $this->Html->url(array('controller'=>'static_pages','action'=>'edit',$page['StaticPage']['id'])) ?>" class="btn btn-small">
  <i class="gicon-edit"></i>
</a>

Это все еще правильно направляет URL-адрес, но может сделать запись якорного тега в точности так, как вы хотите намного проще.

Я лично принимаю этот подход, когда мне не нужен простой текст в ссылке, поскольку он может быть более читабельным, чем использование метода link с 'escape'=>false.

Ответ 3

Расширение на drmonkeyninja ответ:

Для CakePHP 3.X вы должны использовать:

<a data-original-title=" Edit " data-placement="left" rel="tooltip" href="<?php echo $this->Url->build(array('controller'=>'static_pages','action'=>'edit',$page['StaticPage']['id'])) ?>" class="btn btn-small">
  <i class="gicon-edit"></i>
</a>

($this->Url->build вместо $this->Html->url)