Как написать 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"><i class="gicon-edit"></i></a>
Как должен быть написан правильный HTML-код?
Ответы
Ответ 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
)