Intégrer CKeditor dans CakePHP

Descendant de FCKeditor, CKeditor est un puissant éditeur WYSIWYG. Nous allons créer un Assistant ou Helper pour transformer facilement un simple champ de type textarea en éditeur de texte complet, ainsi que le gestionnaire d’images et de fichier multimédia associé, CKfinder. Nous allons aussi voir comment il est possible de restreindre l’accès aux fonctionnalités de CKfinder aux utilisateurs authentifiés uniquement. 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

Authentification à double entrée avec CakePHP 1.3

Nous faisons d’une pierre deux coups avec cet article : d’une part nous mettons à jour un ancien article sur l’authentification en proposant une approche plus « propre », d’un point de vue POO, de l’utilisation du composant Auth, et d’autre part la sortie de la version 1.3.0-alpha et son nouveau système de gestion des Routes préfixées nous permet de décrire la mise en place très simple d’un système d’authentification à double entrée (ou plus), du type /admin et /membres. Lire la suite

Un plugin pour faciliter l’envoi d’emails

Ce plugin fournit un composant Mailer qui étend le composant Email du cœur de CakePHP. Ce composant Mailer peut alors être étendu pour définir des mailers propres à l’application dans lesquels des méthodes se chargent de paramétrer les emails. Cela évite de surcharger les contrôleurs avec de nombreuses méthodes dans AppController et permet de facilement envoyer des emails en une ligne de code : $this->UserMailer->sendSignup($user). Lire la suite

Un plugin pour intéragir avec Twitter

Nous avons profité de la demande d’un client, qui souhaitait publier automatiquement un nouveau message sur Twitter après chaque publication d’un article sur son site, pour créer un plugin capable d’intéragir avec le plus connu des services de micro-blogging. Lire la suite

Rendre un plugin traduisible

L’une des conditions préalables à l’adoption par le plus grand nombre d’un plugin CakePHP, c’est la possibilité de pouvoir le traduire dans n’importe quelle langue. Voyons comment préparer un plugin à son internationalisation. 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

Article dans PHPSolutions n°33

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

Plugin de moteur de recherche multi-modèles

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 :

  • Utilise les index Full-Text de MySQL.
  • Facile à installer : il suffit de télécharger les fichiers et de créer une seule table, quel que soit le nombre de Modèles à indexer.
  • Non-intrusif : inutile de créer d’index Full-Text sur les tables existantes.
  • Plusieurs mode de recherche : langage naturel, langage naturel avec extension de requête, et recherche booléenne.
Lire la suite