CakePHP est livré avec un grand nombre de fonctions utiles qu’il faut découvrir. En tant que développeurs, vous avez j’imagine déjà dû mettre en place un lien « Retour » ou quelque chose du genre n’est-ce pas ?
Le problème posé est souvent : comment retourner proprement a une page qui a des paramètres (exemple la pagination de CakePHP), comment ne pas faire « ressortir » le visiteur ayant atterri sur cette page, comment rendre ma bidouille plus propre …
La réponse grâce à CakePHP : Controller::referer()
Plusieurs solutions existent et sur lesquelles on peut se baser :
- la variable $_SERVER['HTTP_REFERER'] de php
- un petit bout de javascript : document.location(-1)
- utiliser les sessions
- … ou d’autres solutions sur mesure avec des fonctions trouvées à droit ou à gauche que l’on essaye de faire fonctionner !
Je me propose ici de vous présenter la méthode Controller::referer() livrée avec Cake … tout simplement car je la trouve géniale !
La signature de la méthode
Pour savoir comment appeler la méthode, voici la signature de la fonction :
// Retrouve l'url référente de cette requête Controller::referer($default = null, $local = false);
Paramètres :
- string $default : URL par défaut à utiliser si on ne peut pas retrouver le HTTP_REFERER dans les en-têtes de la requête
- boolean $local : Placer ce paramètre à true permet de restreindre l’url de retour au serveur local. Si l’utilisateur vient de l’extérieur il sera redirigé vers la page par défaut.
Retour :
- string : L’adresse publique de retour
Une utilisation possible
Et voici la portion de code qui explique comment faire :
// Dans le fichier xxx_controller.php $pageRetour = $this->referer(array('action'=>'index'), true); $this->set('pageRetour', $pageRetour);
// Dans la vue associée <?php echo $html->link(__('Retour à la page précédente', true), $pageRetour); ?>
L’utilisateur sera redirigé vers la page d’où il vient quels que soient les paramètres de celle-ci (en $_GET), sauf si il vient d’un site externe. Dans ce cas il ira vers la page par défaut i.e l’action « index ».
Pour finir, quelques applications utiles :
- Retour vers une liste utilisant la pagination de CakePHP
- Gestion des utilisateurs ayant désactivé Javascript
- Proposer aux visiteurs entrant de continuer sans problème leur navigation sur le site
Pour aller plus loin
De la même manière, dans un espace d’édition d’enregistrement vous pouvez utiliser cette méthode en la combinant aux sessions. Pour en savoir plus, je vous invite à visiter l’article Revenir à la bonne page après l’édition d’un enregistrement sur Formation Cakephp.
Pingback: CakePHP : signets remarquables du 18/12/2008 au 23/12/2008 | Cherry on the...