Voici aujourd’hui un rapide zoom sur une méthode de CakePHP qui permet de facilement récupérer les différents types de fichiers d’une application (helpers, modèles, contrôleurs ou encore plugins). Cette méthode existe depuis un bon moment et était accessible par Configure::listObjects(). Dans la version 1.3 de CakePHP celle-ci a été améliorée et renommée en App::objects().
Je vous invite à lire la documentation pour comprendre comment utiliser cette méthode, le but de cet article étant avant tout de proposer une utilisation concrète résolvant une de ses limites. En effet, seuls les objets de l’application sont retournés par l’application ce qui peut poser problème si on veut par exemple récupérer tous les modèles de l’application ET de ces plugins.
Comment lister tous les objets d’une application et de ses plugins ?
Je vous propose aujourd’hui une introduction au nouveau plugin de migrations pour CakePHP qui vient d’être rendu open source par CakeDC (mon entreprise). Le but est d’expliquer en quelques lignes le fonctionnement du plugin (vraiment simple) et l’intérêt d’utiliser les migrations au sein de vos applications.
Description du plugin en une phrase : il permet aux développeurs de versionner et d’automatiser la création / mise à jour du schéma de la base de données d’une application ainsi que de ces données depuis la ligne de commande.
Pour information, cela fait plusieurs années que le plugin est utilisé en interne chez CakeDC sur tous les projets afin de faciliter le travail en équipe et le déploiement des applications … Il a récemment été totalement ré-écrit et testé pour une ouverture en open source (licence MIT), et est désormais disponible (ainsi que sa documentation) gratuitement !
En savoir plus sur ce nouveau plugin !
Il se peut que lors d’un passage sur un nouveau serveur vous voyez cette erreur apparaître, lors de la tentative de validation de champs avec la règle « alphaNumeric » de CakePHP.
Cette erreur PHP est due à la manière dont l’extension PCRE PHP a été compilé sur le serveur, en l’occurence sans le support des caractères unicode (internationaux). Si vous avez la main sur le serveur et un peu de temps devant vous il suffit de recompiler l’extension avec l’option « –enable-unicode-properties ».
J’imagine bien que ce n’est pas vraiment une solution simple à mettre en oeuvre, alors voici une méthode à placer dans la classe AppModel de votre application (/app/app_model.php). Elle surcharge juste la règle de validation « alphaNumeric » qui posait problème, pour utiliser une validation plus simple … mais qui dans l’ensemble fait pareil
/**
* Overrides the core validation rule as a workaround of server configuration (unicode not supported - PCRE extension)
* http://www.typolight.org/faq-reader/items/compilation-failed.html
*
* @param mixed $check Value to check
* @return boolean Success
* @access public
*/
public function alphaNumeric($check) {
$check = array_shift(array_values($check));
return Validation::custom($check, '/^[a-zA-Z0-9aàâäéèêëîïôöùûü ]*$/');
}
Cette expression régulière en fait même un peu plus au sens où elle autorise également les accents pour la valeur du champ ! Si vous voulez vraiment avoir le même comportement que la règle de base supprimez la liste d’accents de l’expression régulière.
A vos claviers …
Voici un petit bout de code permettant de résoudre un phénomène dû à l’utilisation des routes avec CakePHP. Lors d’une question récemment posée sur IRC, un membre a soulevé une remarque intéressante vis-à-vis du système de routage de Cake : lorsqu’une route existe pour une page, rien n’empêche l’utilisateur d’accéder à la page en utilisant l’url d’origine « /controller/action/param1/param2« .
Ci-après une illustration du problème avec le contrôleur « Pages » livré avec CakePHP, ainsi qu’une proposition de code pour rediriger correctement les utilisateurs. C’est l’occasion idéale pour découvrir quelques méthodes proposées par le Router de CakePHP.
Lire la suite »
Vous n’avez pas pû passer à côté des tweets et articles de blogs à propos des récents mouvements au sein de la communauté CakePHP … si c’est le cas, il est temps de vous rattraper !
En quelques mots, le projet développé en secret et publié sous le nom initial de « Cake3″ (ce qui a été source de mésententes au sein de l’équipe) a donné lieu à un nouveau framework dont le site à ouvert récemment : Lithium. Ce n’est pas à proprement parler un fork de CakePHP au niveau code, vu que tout a été ré-écrit de zéro … mais les contributeurs et concepts sont communs ! J’ai pu voir des questions d’utilisateurs ayant peur de la fin de CakePHP, et cela me fait plutôt sourire : un si gros projet ne s’arrêtera pas si facilement surtout vu le nombre d’utilisateurs actuels, la volonté de ceux-ci et les contributeurs qui pensent plus que jamais au futur.
Je vous propose donc un petit résumé des évènements, afin de montrer en quoi cette séparation permettra à CakePHP de repartir de plus belle dans son développement.