Zend_Layout
possède quelques options. Vous pouvez les spécifier
grâce à des accesseurs. Autrement, en passant un tableau ou un objet
Zend_Config
au constructeur, ou à startMvc()
. Un tableau
d'options peut aussi être passé à setOptions()
, un objet
Zend_Config
peut être passé à setConfig()
. Les options
de configuration sont les suivantes :
-
layout : le nom du script de layout. L'inflecteur traduit alors ceci en nom de fichier. Par défaut, il s'agit de "layout" traduit vers "layout.phtml". Les accesseurs sont
setLayout()
etgetLayout()
. -
layoutPath : l'url de base vers les scripts de layout. Les accesseurs sont
setLayoutPath()
etgetLayoutPath()
. -
contentKey : la variable de layout utilisée pour accéder au contenu par défaut (lorsqu'utilisée couplée avec MVC). La valeur par défaut est "content". Pour les accesseurs :
setContentKey()
etgetContentKey()
. -
mvcSuccessfulActionOnly : si une action envoie une exception et que cette option vaut
TRUE
, alors le layout ne sera pas rendu. (Ceci évite un double rendu alors que le plugin ErrorHandler est activé). Par défaut cette option est àTRUE
. Ses accesseurs :setMvcSuccessfulActionOnly()
etgetMvcSuccessfulActionOnly()
. -
view : l'objet de vue (
Zend_View
) utilisée par le layout pour rendre son script. Utilisé avec MVC,Zend_Layout
cherchera à récupérer la vue via l'aide ViewRenderer, si aucun objet de vue ne lui est passé explicitement. Les accesseurs sontsetView()
etgetView()
. -
helperClass : la classe représentant l'aide d'action lorsque
Zend_Layout
est utilisé avec les composants MVC. Par défaut il s'agit deZend_Layout_Controller_Action_Helper_Layout
. Les accesseurs sontsetHelperClass()
etgetHelperClass()
. -
pluginClass : la classe représentant le plugin de contrôleur frontal lorsque
Zend_Layout
est utilisé avec les composants MVC. Par défaut, il s'agit deZend_Layout_Controller_Plugin_Layout
. Les accesseurs sontsetPluginClass()
etgetPluginClass()
. -
inflector : l'inflecteur utilisé pour la résolution des noms de layout vers les scripts de layout. Voyez la documentation spécifique pour plus de détails. Les accesseurs sont
setInflector()
etgetInflector()
.
Vous devez passer les helperClass et pluginClass à startMvc()
Pour que les paramètres helperClass
et pluginClass
agissent, vous devez les passer en options à startMvc()
. Si vous les
spécifiez après, ils seront ignorés.
Les exemples sont basés sur les paramètres $options
et
$config
suivants :
$options = array( 'layout' => 'foo', 'layoutPath' => '/chemin/vers/layouts', 'contentKey' => 'CONTENT' // ignorés si MVC n'est pas utilisé );
/** [layout] layout = "foo" layoutPath = "/chemin/vers/layouts" contentKey = "CONTENT" */ $config = new Zend_Config_Ini('/chemin/vers/layout.ini', 'layout');
Exemple 486. Passer des options au constructeur ou à startMvc()
Le constructeur et la méthode statique startMvc()
acceptent soit
un tableau d'options, soit un objet Zend_Config
.
Voyons le cas du tableau :
// Avec le constructeur : $layout = new Zend_Layout($options); // Avec startMvc(): $layout = Zend_Layout::startMvc($options);
Et maintenant avec l'objet de configuration :
$config = new Zend_Config_Ini('/chemin/vers/layout.ini', 'layout'); // Cas du constructeur: $layout = new Zend_Layout($config); // Via startMvc(): $layout = Zend_Layout::startMvc($config);
C'est la manière la plus simple de configurer votre objet
Zend_Layout
.
Exemple 487. Utilisation de setOptions() et setConfig()
Pour configurer Zend_Layout
après l'avoir instanciée,
utilisez les méthodes setOptions()
et setConfig()
sur
l'objet :
// Utilisation d'un tableau d'options: $layout->setOptions($options); // Utilisation d'un objet Zend_Config: $layout->setConfig($options);
Notez cependant que certaines options comme pluginClass
et
helperClass
n'auront aucun effet avec ses méthodes. Elles doivent être
passées au constructeur ou à la méthode startMvc()
.
Exemple 488. Utilisation des accesseurs
Enfin, vous pouvez aussi configurer votre objet de
Zend_Layout
grâce à ses accesseurs. Ils peuvent s'utiliser
chaînés (interface fluide):
$layout->setLayout('foo') ->setLayoutPath('/chemin/vers/layouts') ->setContentKey('CONTENT');