Archives par étiquette : headLink

Aide de vue dans les layouts de Zendframework 2 : Exemple

Présentation de l'exemple

Une aide de vue, ou ViewHelper, sert à factoriser des bouts de code pour nos views ou layouts.

L'appel à notre aide de vue se fera très simplement. Prenons par exemple le cas où on a besoin de déclarer des feuilles de style dont les noms sont contenus dans un tableau :

Dans cet exemple, on utilise deux aides de vue, basePath() qui est fournie dans le package Zendframework 2 et getHeadLinks() que je vais développer ci-dessous.

Pour mon aide de vue je passe trois paramètres :

  • $base_path : la racine du service fournie par l'aide de vue de ZendFramework
  • $favicon_file : le favicon à utiliser pour cette page
  • $config['css'] : le tableau provenant du config/module.config.php

Dans config/module.config.php, je décris les feuilles de style à charger de la façon suivante :

cela devra donner dans le code de la page :

Implémentation de notre aide de vue

Une aide de vue, ou ViewHelper, est une classe dérivée de Zend\View\Helper\AbstractHelper. Pour mon cas, je l'appelerai HeadLinks et elle sera placée dans le src du module, dossier View/Helper :

Sa méthode _invoke() retournera le résultat en invoquant son nom déclaré dans module.php dans la méthode getViewHelperConfig().

Dans mon aide de vue, j'ai besoin d'utiliser l'aide de vue headLink de Zendframework. Or, je ne peux pas utiliser l'alias headLink qui n'est pas invokable. Je vais donc utiliser la classe directement.

Utilisation de mon aide de vue dans un layout

Pour utiliser mon aide de vue dans un layout, je dois disposer d'une variable $this->config qui contient notamment la clé 'css' donnant la structure à monter (en fait, je passe également dans ce tableau tous les éléments constitutifs du layout comme les composants du header, du footer, etc.).

Comment passer une variable à un layout ?

Première façon : depuis un contrôleur

Dans un contrôleur, on a accès au layout par la méthode layout(). On crée donc les variables directement :

En particulier pour mon cas, je trouverai la valeur de ma variable de configuration de la façon suivante :

Deuxième façon : depuis la classe Module

Etant donné que la configuration est disponible dans la classe Module, on peut créer la variable depuis la méthode onBootstrap() de cette classe :

Troisième façon : en dérivant la classe Module de ZfcBase\Module\AbstractModule

On devra alors restructurer le fichier module.config.php de la façon suivante :

Ainsi, on pourra utiliser dans le module la méthode getOptions() :

Cela va permettre d'utiliser une configuration particulière pour chaque module de l'application. Mais ça, ce sera l'objet d'un prochain article.

Voir aussi un article complet sur la création d'un ViewHelper dans ZF2.