Un Helper pour afficher des âges

Voici un tout petit Helper bien utile quand nous manipulons un événement daté et que nous voulons afficher le nombre d’années écoulées entre cet événement et maintenant. Lire la suite

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 automatique d’une colonne de tri avec un Comportement

Nous avons souvent besoin d’une colonne de tri numérique dans une table, lorsque les données de cette table ne peuvent être classées selon un ordre standard, comme l’ordre alphabétique ou la date de création. C’est pourquoi nous avons créé un Comportement (Behavior) pour gérer automatiquement les opérations de maintenance de l’index de tri en cas d’ajout, modification ou suppression de données. Le Comportement ajoute également deux méthodes au Modèle associé, moveUp et moveDown, pour monter ou descendre un enregistrement de la table. 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

Pagination avec critères de filtrage complexes

Prenons l’exemple d’un blog classique, sur lequel nous désirons mettre en place un moteur de recherche pour faciliter l’accès aux articles à nos visiteurs. Nous ne souhaitons cependant pas créer de vue spécifique pour l’affichage des résultats mais simplement réutiliser une vue existante qui affiche la liste paginée des articles grâce au Paginator. 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 un flux RSS avec CakePHP

Proposer un flux RSS est devenu une fonctionnalité incontournable sur la plupart des sites, et CakePHP simplifie grandement le processus de création de flux.

Partons d’un blog publiant des articles. Nous souhaitons créer un flux des articles récents, à la norme RSS version 2.0 et disponible via l’URL suivante : /articles/flux.rss. 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

Afficher les dates en français

Nous allons définir la configuration locale grâce à la fonction PHP setlocale(), et ce en fonction de l’environnement : développement ou production. Lire la suite