Méthodologie

Un plugin pour envoyer des emails avec une tâche Cron

Le plugin CronMailer est une solution facile à installer qui permet de gérer une file d’attente d’emails à envoyer par tâche Cron. Ce plugin a pour l’instant été testé avec la branche 1.3 de CakePHP. Le plugin inclut un composant EmailQueueComponent qui gère la file d’attente. Il fonctionne exactement comme le composant EmailComponent du coeur de Cake, à la différence près qu’il enregistre les emails dans la base de données au lieu de les envoyer aussitôt. Le plugin inclut également un Shell exécutable par la console de CakePHP, à lancer soit en ligne de commande, soit avec Crontab pour un envoi différé et par lot. Lire la suite

La souplesse des Routes avec CakePHP 1.3

La version 1.3 de CakePHP offre encore plus de souplesse dans la gestion des Routes. Nous allons l’illustrer avec une application toute simple : des Posts avec un id, un titre, un slug (que l’on peut gérer en toute simplicité avec le Comportement SluggableBehavior) et un contenu.

Nous désirons avoir des url très simples du style www.monsite.tld/slug-du-post. L’idée est de pouvoir créer des Routes de façon dynamique sans avoir à les écrire à la main dans le fichier config/routes.php. CakePHP 1.3 permet de créer une classe à brancher sur le Router qui va analyser une url, rechercher le slug passé en paramètre dans les Posts, et renvoyer sur l’action view du contrôleur PostsController avec le slug du Post en paramètre. Afin de garantir une vitesse de traitement maximale, nous allons mettre la liste des slugs possibles en cache. Lire la suite

Versionner un projet avec Git : principes et bases

Le gestionnaire de source est un outil indispensable pour le développement d’applications. Nous commencerons par expliquer son principe, puis aborderons l’utilisation d’un gestionnaire de source très complet, Git, avec CakePHP. Lire la suite

Un plugin de formulaire de contact

Ce plugin fournit un formulaire de contact basique qui vous envoie les informations du contact par email, et les stocke dans la base de données au cas où un problème survienne lors de l’envoi de l’email. Il reprend le principe d’un précédent article de Formation CakePHP. Lire la suite

Le piège du counterCache : créons un behavior !

Dans le tutoriel précédent : Mise en place du counterCache : un piège à éviter, nous avions vu comment mettre en place le counterCache entre deux modèles associés en belongsTo et comment mettre à jour le compteur d’origine, lorsqu’un enregistrement change de parent.

L’astuce consistait à placer notre logique dans les callbacks beforeSave et afterSave du modèle Post, dans lequel est déclarée l’association belongsTo avec le modèle Category. Tout cela fonctionne bien pour un seul modèle, mais si l’application a plusieurs counterCache actifs, il faut dupliquer l’astuce dans tous les modèles, ce qui est peu productif et ne permet pas de réutiliser l’astuce dans d’autres projets.

Nous allons donc créer un Behavior, nommé tout simplement Counter, pour exécuter automatiquement la mise à jour du counterCache lorsque des enregistrements change de parent. Lire la suite

Quelques astuces pour la génération des requêtes SQL

Nous allons voir comment contrôler finement les requêtes SQL préparées par CakePHP sans nous écarter des méthodes habituelles, c’est à dire le passage d’un tableau d’options à la méthode Model::find();. Lire la suite

Factoriser les actions redondantes

Au fil des projets CakePHP, nous nous apercevons très vite qu’un certain nombre d’actions de nos Contrôleurs sont répétées quasiment à l’identique, en particulier les actions d’administration. Dans la mesure où tous les Contrôleurs de l’application héritent de la classe AppController, profitons-en pour factoriser les actions redondantes sous la forme la plus générique possible. Lire la suite

Déploiement d’un site avec Rsync

Pour faire suite à l’article sur l’hébergement d’un site CakePHP sur OVH , nous allons aborder une méthode plus robuste que le FTP pour déployer notre site : la synchronisation des fichiers avec Rsync. Lire la suite

Contrôleur : une seule action pour l’ajout et la modification

Un Contrôleur contient typiquement les actions classiques pour l’ajout, la modification, la suppression et la lecture d’un enregistrement. Il nous apparaît inutile de faire deux actions différentes pour l’ajout et la modification d’un enregistrement. Cela oblige à faire deux vues, alors qu’une seule suffit : soit nous affichons un formulaire vide pour un ajout, soit un formulaire prérempli pour une modification. Lire la suite

URL Rewriting souple : les routes de CakePHP

CakePHP offre une réelle souplesse dans la gestion de l’URL Rewriting à condition d’utiliser des « routes » et de toujours définir les liens de la même façon. Lire la suite