# Zend_Layout options de configuration

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() et getLayout().

- layoutPath : l'url de base vers les scripts de layout. Les accesseurs sont setLayoutPath() et getLayoutPath().

- 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() et getContentKey().

- 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() et getMvcSuccessfulActionOnly().

- 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 sont setView() et getView().

- helperClass : la classe représentant l'aide d'action lorsque Zend_Layout est utilisé avec les composants MVC. Par défaut il s'agit de Zend_Layout_Controller_Action_Helper_Layout. Les accesseurs sont setHelperClass() et getHelperClass().

- 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 de Zend_Layout_Controller_Plugin_Layout. Les accesseurs sont setPluginClass() et getPluginClass().

- 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() et getInflector().

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.

## Exemples

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');

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.

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

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');