Placer ses layouts dans des variables globales twig sous symfony2
Quand on trimballe un bundle qu'on aime bien d'un projet à un autre, il est parfois assez pénible de devoir modifier ses vues pour pouvoir les faire pointer sur les layouts du projet en cours. Prenons pour exemple mon userbundle perso. Il est super léger, il gère ce que j'ai besoin de gérer, je n'ai pas peur de mettre les mains dedans et d'adapter au cas par cas si besoin. Je le connais par cœur, puisque je l'ai créé (!) et pour cette même raison il ne me quitte plus. Il contient toutes les vues de la partie admin qui le concernent et pour que ces dernières soient bien intégrées dans la charte que j'utilise, je dois les faire pointer (avec un extends) vers un papa layout (souvent situé dans app/Ressources/views). Quand je code seul j'utilise souvent les même noms pour mes templates mais quand je bricole dans le projet d'un copain, je tombe sur des noms inhabituels et je dois parcourir les 35 vues Twig pour modifier la vue qu'il vont devoir étendre.
C'est pas grand chose mais c'est assez pénible, surtout qu'on a vite oublié une vue ou deux ici ou la. Alors Les variables globales ont révolutionné ma vision de la chose et désormais, tout est plus clair et simple. Je fais pointer mes vues d'administration vers une variable globale qui pourrait ressembler à 'admin_layout' et toutes les autres vers une autre nommée 'main_layout'. Ainsi, plus rien a modifier à part mon fichier de configuration dans lequel j'assigne mes variables globales comme ceci :
# app/config/config.yml # Twig Configuration twig: debug: %kernel.debug% strict_variables: %kernel.debug% globals: main_layout : '::main-layout.html.twig' admin_layout: '::admin-layout.html.twig'
Ainsi dès que je change mon bundle de projet, je modifie juste la valeur de la variable globale dans le fichier de configuration général et roule ma poule comme dirait mon prof d'histoire géo. Tout se met automatiquement à fonctionner, et souvent je pleure de joie.
Voila donc cette astuce toute simple qui permet de faciliter le passage de mon bundle user d'un projet a un autre en un rien de temps. Pour gagner encore plus de temps il y a d'autres bonnes habitudes à prendre, notamment, séparer les parties de la sécurité relative a chaque bundles, ça évite de rechercher les erreurs 6 mois après. Si tout ce qui concerne mon user est dans userbundle, ça limite les fouilles archéologiques inutiles. Les bonnes pratiques, il y en a 2500 donc en voila déja une ;)
Et comme dirait Giscard d'Estaing, à tchao mon pote !
Retour a la liste