Interaction

Autocomplete en Ajax

CakePHP permet de mettre en place des requêtes en Ajax très facilement grâce au Helper AjaxHelper et l’utilisation du framework javascript Prototype et de son extension Script.aculo.us. Nous allons voir comment enrichir un champ texte pour qu’une aide à la complétion s’affiche lors de la saisie des premiers caractères. Lire la suite

Gestion des droits d’accès par groupes d’utilisateurs avec ACL

Pour faire suite à notre tutorial sur l’authentification simple avec le Composant Auth, nous allons mettre en place une gestion de droits d’accès différents selon des groupes d’utilisateurs, en utilisant les ACL (Access Control Lists). Nous partons du principe que le lecteur a déjà mis en place l’authentification décrite dans le tutorial. Lire la suite

Interface d’administration d’un site CakePHP avec le Composant Auth

Nous souhaitons fournir à notre client un panneau d’administration pour qu’il puisse éditer lui-même le contenu de son site, par exemple un simple blog avec des Articles. Nous nous imposons plusieurs contraintes :

  • L’administration doit être accessible à l’adresse /admin ;
  • Toutes les actions de cet espace d’administration doivent avoir une url commençant par /admin ;
  • L’administration doit avoir un layout différent de celui du site public ;
  • L’accès à l’administration requiert l’authentification d’un administrateur autorisé par un couple login / mot de passe. Nous nous limiterons ici à un seul type (ou rôle) d’utilisateur.

Lire la suite

Proposer une corbeille et une annulation pour les suppressions

Une des fonctionnalité les plus utiles disponibles sur toute application de bureau est la possibilité d’annuler les suppressions de données. Sur les systèmes d’exploitation, il existe une corbeille qui liste les éléments effacés et permet de les restaurer.

Nous souhaitons proposer une solution équivalente sur un site CakePHP, avec une corbeille et un lien “Annuler” lors de la suppression d’un enregistrement. Si la taille de la base de données n’est pas une préoccupation cruciale sur un projet, cette fonctionnalité est extrêmement appréciable. Lire la suite

Générer une erreur 404 avec CakePHP

Nous souhaitons verrouiller les actions de consultation de nos Contrôleurs pour pouvoir répondre de façon consistante à toute requête inattendue pour optimiser le référencement du site. En effet, nous ne voulons pas qu’un lien incorrect venant d’un site tiers renvoie un code 200 OK, qui ferait penser à un moteur de recherche qui suivrait ce lien que la page indiquée existe toujours. Nous devons identifier une requête ne donnant pas ou plus de résultat en renvoyant un code 404 avec la méthode cakeError. Lire la suite

Personnalisation des messages “flash”

L’interaction avec l’utilisateur d’une application passe très souvent par l’affichage de messages d’erreur, d’avertissement ou de succès. CakePHP offre une gestion très simple de ce mécanisme en stockant des messages “flash” dans la session, grâce à la fonction setFlash() dans un Contrôleur et les affiche avec la fonction flash() dans une Vue. Voyons comment personnaliser cet affichage. Lire la suite

Gestion des erreurs de base de données

Lors du développement d’un site, nous voyons toutes les erreurs et les avertissements grâce à un niveau de debug réglé sur 2 dans {app}/config/core.php. Lors de la mise en ligne du site, nous mettons ce niveau à 0, les erreurs deviennent donc invisibles à l’utilisateur. Mais si une erreur SQL survient, cela peut fortement affecter le fonctionnement du site, et nous voulons en être averti immédiatement.

La classe Model possède une méthode de callback, “onError”, appelée automatiquement lorsqu’une opération sur la base de données produit une erreur. Nous allons se servir de cette fonction pour gérer efficacement une erreur SQL. Lire la suite