templatemanager description - Ppito/zf3-framework GitHub Wiki
Module système de gestion du template basé sur Twig 2 et Bootstrap 4.
Fournir un template générique et dynamiquement, capable de s'adapter sans devoir retoucher au template de base. Les modules devront forcement être découpé/architecturé pour permettre de s'auto designer sans jamais entrer en conflit avec le reste du template.
Pour permettre la généricité du template, il a été découper en 27 parties, le tout répartie en 8 grandes catégories.
Chaque partie est dans un container
bootstrap (sauf les asides voir la disposition), ils peuvent être surchargé directement par la position de sa catégorie de base et ainsi permettre de faire le design de son choix.
Note: le Content*
central est celui de la vue princpale, s'il est surchargé seul des modules seront visibles.
Catégorie | Disposition |
---|---|
Navbar Header Left Aside Content Right Aside Bottom Footer Custom |
Pour permettre le chargement d'un module nous allons définir sa configuration dans \TemplateManager\Module::CONFIG_NAME
.
Ce paramètre prends une liste de configuration de module qui devront implémenter les options suivantes :
- name - Nom de la class du module à charger
- position - position dans le template (voir la liste des positions disponibles)
- priority - la priorité d'affichage (plus la priorité est élevée, plus le module sera chargé en premier)
- params - paramètre de configuration spécifique à chaque module
Exemple (module.config.php) :
// Configuration du template pour la composition de la page
\TemplateManager\Module::CONFIG_NAME => [
'Breadcrumb' => [
'name' => \GPBreadcrumb\Service\GPBreadcrumb::class,
'position' => \TemplateManager\Helper\Position::CONTENT_TOP,
'priority' => 1,
'params' => [],
],
// ...
],
],
Note : la clé (Breadcrumb
dans l'exemple) ne sert à rien de spécial, il servira surtout de description du module (Utile lorsqu'on charge plusieurs fois le même module avec des paramètres différents).
- Asset - permet la gestion du versionning des ressources statiques, inspiré du système de versionning de Symfony.
- ClassName - permet de récupérer le nom d'une class PHP (utilisé uniquement sur la page d'erreur)
- Module - permet de vérifier si un module a été chargé et retourne le rendu d'un module
2 nouveaux Helper ont été créés pour permettre de charger des scripts dans le footer (en plus de ceux du header) FooterScript
et FooterInlineScript
.
Ces 2 Helper fonctionnent respectivement comme HeadScript et InlineScript.
TemplateManager utilise le système d'EventManager de Zend Framework 3 et plus particulièrement au MvcEvent.
Au chargement du Module, celui-ci attache son traitement sur l'event MvcEvent::EVENT_RENDER, évènement est exécuté juste avant le rendu de la Vue
et qui permet de faire des traitements après le dispatcher de l'application (les différents controller).
Lors de l'invocation de l'event, le système va pré-processer les différents modules pour y stocker les différents rendu qui seront alors affiché lors de l'appel de la fonction Twig
tm_getModule.