Créer un helper avec cakephp
Si vous faites du cakephp, vous avez du utiliser le « HtmlHelper » ou le « FormHelper » sans même le savoir.
Mais si, si vous avez utilisé ceci :
<?php echo $this->Html->charset(); ?>
ou
<?php echo $this->Html->image('votre_image.png'); ?>
ou encore
<?php echo $this->Form->input('username', array('label' => 'Username')); ?>
Vous avez utilisé un helper.
Et il faut quand même l’avouer, c’est bien pratique. Vous n’avez plus besoin de gérer les emplacements de vos fichiers, les noms de dossiers ou bien le système de tableau des name pour vos inputs de vos formulaires cakephp.
La bonne nouvelle est que vous pouvez créer vos propres helpers
Vous n’avez pas l’air emballé, passons à la pratique.
Créer votre premier helper
Imaginez que vous avez un système de commentaire, de billet etc… et que vous souhaitez afficher les dates de la forme que vous voulez quelque soit la vue sur laquelle vous êtes.
Solution 1 (sans helper)
Vous allez mettre ce code dans chacune de vos vues :
<?php setlocale(LC_TIME, 'fra'); $date=strftime("%d %B %Y - %H:%M:%S", strtotime($date)); echo $date; ?>
Au delà du fait que ce soit un peu lourd (et encore là le traitement est plutôt simple), que se passe t-il si vous devez changer un paramètre dans strftime par exemple?
Vous n’allez pas modifier votre code sur toutes vos vues!
Et si on tentait une alternative avec un helper perso?
Solution 2 (avec le helper)
Alors pour créer un helper, c’est assez simple, vous devez créer un fichier dans le dossier
/ app / View / Helper /
Appelez ce fichier
DateFrHelper.php
Coté code:
<?php class DatefrHelper extends AppHelper { public function format($date) { setlocale(LC_TIME, 'fra'); $date=strftime("%d %B %Y - %H:%M:%S", strtotime($date)); return $date; } } ?>
Vous pouvez désormais utiliser votre helper sur chaque date dans n’importe quelle vue!
Coté vue:
<?php echo htmlentities($this->Datefr->format($commentaire['date_commentaire'])) ?>
Appeler vos modèles dans un helper cakephp
Alors vous ne direz pas que c’est moi qui vous l’ai dit, mais vous pouvez faire appel à vos modèles même depuis un helper.
Si vous trouvez une VRAIE utilité, merci de laisser un commentaire parce-que j’ai beau cherché, je n’en vois pas.
Toutefois, disons que vous avez besoin de récupérer le token d’un de vos users:
public function getToken($id) { App::import("Model", "User"); $model = new User(); $result=$model->find('first', array( 'conditions'=> array( 'User.id'=>$id, ) ) ); return $result['User']['token']; }
Vous pouvez utiliser cette méthode de la même manière que « format » de toute à l’heure.
Bilan
Vous pouvez très bien utilisé un helper pour des choses plus complexes, comme par exemple, recréer le FormHelper pour y ajouter Bootstrap. Lorsque vous ferez
echo $this->FormBootstrapCustom->input('username', array('label' => 'Username'));
vous générerez tous les blocs (div, span etc…), qu’il vous faut pour bootstrap.
Bonus
Pour les plus impatients, un
<?php $date= '2014-08-12 00:45:45'; setlocale(LC_TIME, 'fra'); $date=strftime("%d %B %Y - %H:%M:%S", strtotime($date)); echo $date; ?>
retourne : 12 août 2014 – 00:45:45
Toute la doc sur strftime est disponible ici
Je pense avoir tout dit, vous êtes prêt à créer vos propres helpers cakephp.
Si vous avez apprécié cet article, n’hésitez pas à le partager sur les réseaux sociaux et/ou de laisser un commentaire ci dessous.
Bon dev à vous 😉