Galactic-Shrine Twig Coding Standard
Version: 1.0.0
Auteur / Author: ⋞Galactic-Shrine⋟
Portée / Scope: Projets Twig / Symfony / Layouts / Pages / Partials / Components / Emails / Back-office / Fragments réutilisables
1. Objectif
Ce standard définit la manière d’écrire le code Twig dans les projets Galactic-Shrine.
Il a pour objectifs :
- d’uniformiser les templates Twig ;
- de limiter la logique applicative dans les vues ;
- de garder des layouts et composants lisibles ;
- d’aligner l’organisation Twig avec Symfony et les conventions Galactic-Shrine.
2. Principes généraux
Le code Twig Galactic-Shrine doit être :
- lisible ;
- structuré ;
- peu chargé en logique ;
- prévisible ;
- compatible avec une maintenance long terme.
Le code doit privilégier :
- des templates ciblés ;
- des blocks utiles ;
- des includes explicites ;
- un contexte de vue préparé en amont ;
- une logique d’affichage simple.
3. Décisions officielles Galactic-Shrine pour Twig
Décisions officielles :
- garder la logique métier hors Twig ;
- préparer les données dans le contrôleur, le presenter ou la couche dédiée ;
- nommer les blocks, templates et partials de manière explicite ;
- utiliser des variables de contexte claires ;
- limiter les conditions imbriquées dans les vues ;
- conserver une cohérence forte entre layout, partials et composants.
4. Convention de nommage
- templates : nommés selon leur rôle (
profile/show.html.twig,components/user-card.html.twig) ; - blocks : explicites ;
- variables Twig : convention du contexte préparé par l’application ;
- macros : rares, ciblées et clairement nommées ;
- fragments : pas de noms vagues.
Lorsque le contexte applicatif appartient à Galactic-Shrine, privilégier des noms clairs et stables.
Lorsque Twig consomme des structures externes, conserver la convention imposée par la source.
5. Structure recommandée d’un template Twig
Ordre recommandé :
extendsou structure principale ;- définition des blocks majeurs ;
- includes ou embeds ciblés ;
- fragments secondaires ;
- scripts et hooks spécifiques si nécessaires.
Règles :
- un template doit avoir un rôle identifiable ;
- un partial doit être réellement réutilisable ou spécialisé ;
- ne pas transformer un template en couche métier déguisée.
6. Style d’écriture
6.1 Conditions
- garder des conditions simples ;
- éviter l’enchaînement de logique métier ;
- préparer les états complexes en amont.
6.2 Blocks et includes
- créer un
blockpour un vrai point d’extension ; - utiliser
includepour les fragments réutilisables ; - utiliser
embedseulement si le gain structurel est réel.
6.3 Variables
- préférer des variables déjà normalisées ;
- éviter les chaînes d’accès trop profondes répétées ;
- garder les noms du contexte cohérents entre contrôleurs et templates.
7. Règles spécifiques Twig
- ne pas effectuer de calcul métier important dans Twig ;
- limiter les filtres chaînés difficiles à lire ;
- traiter les permissions et états complexes avant rendu quand possible ;
- garder les composants Twig stables et bien délimités ;
- préserver l’accessibilité du HTML produit.
8. Gestion des erreurs et robustesse
- prévoir les données optionnelles explicitement ;
- ne pas supposer silencieusement qu’une variable existe si le contrat est flou ;
- centraliser les valeurs par défaut importantes ;
- garder les templates résilients aux contextes partiels raisonnables.
9. Types d’éléments à revoir en priorité
Relire en priorité :
- layouts ;
- templates de page ;
- composants réutilisables ;
- partials complexes ;
- emails ;
- blocs avec permissions ou états multiples ;
- vues fortement couplées à JavaScript.
10. Exemple complet recommandé
{% extends 'layout/base.html.twig' %}
{% block body %}
<main class="GsProfilePage">
{% include 'components/profile/header.html.twig' with {
User: User,
Statistics: Statistics
} only %}
{% if RecentActivities is not empty %}
{% include 'components/profile/recent-activities.html.twig' with {
Activities: RecentActivities
} only %}
{% endif %}
</main>
{% endblock %}
11. Décision officielle recommandée
Standard officiel recommandé pour Galactic-Shrine Twig :
- logique métier hors template ;
- templates et partials explicites ;
- contexte préparé en amont ;
- conditions courtes ;
- structure de layout propre et maintenable.
12. Résumé exécutable
À appliquer dans tous les projets Twig Galactic-Shrine :
- peu de logique dans Twig ;
- blocks et includes ciblés ;
- noms de templates explicites ;
- contexte clair ;
- HTML produit sémantique et stable.