J'utilise CakePHP 2.2 et j'ai besoin d'écrire le code suivant -
<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>
J'ai écrit le code suivant dans 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')); ?>
et obtenir le résultat suivant -
<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>
Comment le bon code HTML doit-il être écrit?
Explication:
L'ajout de l'option 'escape'=>false
À votre lien fait en sorte qu'il n'essaie pas de traduire ('échapper') tous vos caractères html.
De plus, je trouve rarement (si JAMAIS) utile d'utiliser ->tag()
de CakePHP. Écrivez simplement la balise - beaucoup plus facile (et plus efficace).
Exemple de code:
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 ***************
)
);
Détails ici: http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::link
PS De toute évidence, le code pourrait être à une ligne si vous préférez - il suffit de le séparer ici pour en faciliter la lecture.
Vous pourriez trouver plus facile de gérer ce type de lien en utilisant la méthode url
de l'assistant 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>
Cela achemine toujours correctement l'URL, mais peut rendre l'écriture de la balise d'ancrage exactement comme vous le souhaitez beaucoup plus simple.
Personnellement, je prends cette approche lorsque je ne veux pas simplement du texte simple dans un lien car il peut être plus lisible que d'utiliser la méthode link
avec 'escape'=>false
.
Élargir la réponse de drmonkeyninja:
Pour CakePHP 3.X, vous utiliseriez:
<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
au lieu de $this->Html->url
)