mercredi 8 septembre 2010

eZ Publish et les espaces de noms

La fonctionnalité des espaces de noms (namespaces) est apparue dans PHP depuis  sa version 5.3, cependant cette fonctionnalité avait déjà été implémentée dans le langage de template eZ Publish depuis les versions 3.x.

Les espaces de noms sont en effet très pratique dans le cadre de regroupement des variables dans de contexte commun.

  • Les espaces de nom dans les templates
Pour utiliser cette fonctionnalité dans les templates eZ Publish, il suffit de passer par les fonctions sur les variables, la fonction include ou l'itérateur section (déprécié) en précisant le paramètre name.

1. Exemple avec les fonctions set-block et def:

{def $variable='une variable sans namespace'}
{set-block name='mynamespace' variable=$variable}variable avec namespace{/set-block}

variable : {$variable}
variable dans l'espace mynamespace : {$mynamespace:variable}


2.  Exemple avec la fonction include
 Dans un template principal

{def $main_texte = 'Texte du fichier principal'}
{include uri='design:exemple.tpl' name='test'}
{*Affichage d'une variable définie dans le fichier exemple.tpl*}
{$test:foo}


Dans le fichier exemple.tpl

{*Affichage de la variable $main_texte du fichier principal*}
{$:main_texte}
{*définition d'une variable*}
{def $foo = 'Texte du fichier exemple.tpl'}

  • Les espaces de noms dans les vues
Un espace de noms peut être également défini en PHP dans une vue en renseignant le dernier argument de la méthode setVariable de la classe eZTemplate.
Exemple :
$tpl = eZTemplate::factory ();
//pour les versions < 4.3
//$tpl = templateInit ();

$tpl->setVariable( 'nom_variable', 'valeur', 'nom_namespace' );

Il est important de noter que les espaces de noms eZ Publish n'agissent que sur les variables et ne doivent pas faire l'objet de confusion avec la portée (scope) des variables.