04
May
2011

Symfony possède une riche bibliothèque de plugins, que vous trouverez à cette adresse : http://www.symfony-project.org/plugins/. Je vais en mentionner trois, que j'utilise sur ce site.

sfFormExtra

Symfony a une bonne collection de "widgets" pour les formulaires, mais ceux qui nécessitent une librairie supplementaire sont mis à part, dans ce plugin.

Si vous voulez des widgets qui utilisent jQuery ou jQuery UI (ça fait très web 2.0), vous devez installer ce plugin.

Je m'en sert, sur epinardscaramel, pour avoir un champ TinyMCE dans l'admin et pour les commentaires, pour le champ "reCaptcha", et pour avoir un joli calendrier (dans l'admin uniquement).

copie d'écran du formulaire de commentaires

Pour plus d'informations sur ce plugin, et sur la façon de s'en servir, je vous invite à lire le blog officiel de symfony (en anglais) : "Spice up your forms with some nice widgets and validators".

sfDoctrineGuard

La gestion des utilisateurs, voilà quelque chose de critique dans une application, mais pas forcément amusante à (re-)écrire. Le plugin sfDoctrineGuard s'occupe de tout ça, et vous laisse vous concentrer sur le cœur de l'application.

Le plugin s'occupe de la création des tables utilisateurs en base de données, des formulaires d'inscription, de connexion (login) et deconnexion (logout). J'éxagère à peine en disant que tout ce qu'il vous reste à faire, c'est d'ajouter "is_secure: true" à la configuration des modules pour lesquels vous voulez que l'utilisateur soit connecté.

sfDoctrineGuard gère les utilisateurs, les groupes, et les permissions. La seule difficulté que j'ai eu à été de créer un formulaire pour laisser les utilisateurs modifier leur propres informations. Il suffisait de créer un formulaire héritant sfGuardRegisterForm :

class monsfGuardUserAdminForm extends sfGuardRegisterForm {

}

sfDoctrineActAsTaggable

Ce dernier plugin est moins connu que les deux premiers, mais je le trouve très pratique. Il reprend la gestions des tags (étiquettes), tels qu'ils sont utilisés dans Apostrophe, un CMS basé sur symfony.

Pour faire cela, le plugin rajoute un "comportement" Doctrine, appellé "Taggable". Une fois ce comportement ajouté à une table, par exemple "Billets", le plugin se charge de créer la table "Tag", et la table de liaison entre Tag et Billets.

Mais le plus important dans ce plugin, est le widget de séléction des étiquettes : le plugin transforme une bête zone de texte en ça :

le widget de selection des étiquettes

On voit les étiquettes les plus utlisées, et il suffit de cliquer sur une étiquette pour l'ajouter, ou la retirer, de la liste des étiquettes sélectionnées.

Voilà donc les trois plugins que j'utilise sur ce site, je vous les recommande chaudement.

Manu