templatemanager description - Ppito/zf3-framework GitHub Wiki

Module système de gestion du template basé sur Twig 2 et Bootstrap 4.

Principe :

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.

Composition 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
Drawing

Configuration d'un module de template

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).

Twig\Extension

  • 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

View\Helper

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.

Système de Listeners / EventManager

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.

⚠️ **GitHub.com Fallback** ⚠️