Offre d’emploi/stage
Petit apparté sur notre site avec un message de notre partenaire, l’agence parisienne MRJ. Lire la suite
Petit apparté sur notre site avec un message de notre partenaire, l’agence parisienne MRJ. Lire la suite
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
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
Nous avons le plaisir d’annoncer la publication d’un dossier sur les bases de CakePHP, co-écrit avec Pierre Martin, dans le n°33 du magazine PHPSolutions. Cet article de 8 pages présente le framework en général et récapitule les points forts de CakePHP. Lire la suite
Nous vous proposons un plugin pour intégrer un moteur de recherche interne multi-modèles à une application CakePHP. Ses caractéristiques sont les suivantes :
Nous vous proposons un plugin permettant d’associer des tags à un ou plusieurs Modèles d’une application CakePHP. Nous avons souhaité que ce plugin ait les caractéristiques suivantes :
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
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 modèle dont les enregistrements n’ont aucune relation entre eux.
Mais si le modèle Category est construit comme un arbre hiérarchique, avec des sous-catégories sur plusieurs niveaux, l’astuce ne met à jour que le compteur de la branche finale à laquelle est attaché le post. Si nous avions besoin d’afficher le nombre total d’enregistrements de tous les enfants d’une branche parente, il faudrait faire une requête ou un traitement PHP spécifique pour le calculer et le passer à la vue. Lire la suite
FlowPlayer est un lecteur Flash gratuit de fichiers vidéos (flv, mp4 et mv4), audio (mp3) et d’images. Il est entièrement configurable, extensible par des plugins et propose de nombreuses fonctionnalités comme les playlists ou les callbacks javascript. Nous proposons au lecteur un Helper permettant d’insérer facilement une instance de ce lecteur dans une Vue. Lire la suite
Il est possible depuis peu d’ajouter un nouveau paramètre dans le tableau d’options des méthodes Model::find() et Controller::paginate(). Cette nouvelle clé, 'joins', permet de définir facilement des restrictions sur une jointure HABTM et de paginer les données tout aussi facilement. Imaginons une petite application de recettes classées par catégories, une recette pouvant appartenir à plusieurs catégories et une catégorie pouvant être associée à plusieurs recettes. Lire la suite