Bonjour,
j'ai utilisé un tag de bootstrap dont le code est le suivant :

<?php echo $article['Post']['vendu']==0 ? $this->Form->postLink(
   $this->Html->tag('i', '', array('class' => array('icon-pencil','boutil'),'title'=>'Modifier'
    )),
        array('action' => 'edit', $article['Post']['id']),
        array('escape'=>false)

) : '';  ?>

j'ai l'ation edit au niveau de mon controller et la vue edit approprié, mais des que on clique sur le tag Modifier, on m'affiche la modification est terminée sans avoir ouvert la vue edit.ctp pour pouvoir editer les données.
avez vous une explication ?
et merci à l'avance.

4 réponses


PhiSyX
Réponse acceptée

Mais si! :-)

$this->Html->link(
    $this->Html->tag('i', '', array('class' => array('icon-pencil', 'boutil'), 'title' => 'Modifier')),
    array('action' => 'edit', $article['Post']['id']),
    array('escape' => false)
)

Retourne:

<a href="/.../edit/1"><i class="icon-pencil boutil" title="Modifier"></i></a>

YO. As-tu lu ce que fait la méthode postLink de l'helpeur Form sur la doc de cakephp?

FormHelper::postLink(string $title, mixed $url = null, array $options =[])
Crée un lien HTML, mais accède à l’Url en utilisant la méthode POST. Requiert que JavaScript soit autorisé dans votre navigateur.
Cette méthode crée un élément <form>. Donc n’utilisez pas cette méthode dans un formulaire existant. En remplacement vous devriez ajouter un bouton submit en utilisant FormHelper::submit().
[http://book.cakephp.org/2.0/fr/core-libraries/helpers/form.html#FormHelper::postLink]()

C'est pratique pour modifier une donnée rapidement sans devoir à passer par une page d'édition/supression ou c'est aussi pratique pour qu'une personne ne puisse accéder à une page qu'en ayant une méthode (http) spécifique.
Par exemple:

  • Si tu as un article qui est "hors ligne" et que tu veux la passer "en ligne" ou inversement, bah en un simple clique, tu peux! (En précisant les champs + valeurs (ex: dans les options ($options) ['data' => ['status' => !$status]] )
  • form:_method=delete:action=/auth/logout => La page /auth/logout sera appelée avec la méthode http delete.

Mais toi, si tu ne veux qu'un simple lien, sans envoyer de données, il te faut alors utiliser l'helpeur HtmlHelper::link(string $title, mixed $url = null, array $options =[]) (aka $this->Html->link)

J'espère avoir répondu à ta question.

Merci beaucoup pour votre rèponse
mais le p'helpeur HtmlHelper::link ne permet pas d'afficher le tag (l'icone de modification), comme son prototype indique.

Merciiiiiiiii beaucoup, c'est correct. et le problème est bien resolu.