<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24997 -->
<!-- Reviewed: no -->
<sect2 id="zend.application.available-resources.frontcontroller">
    <title>Zend_Application_Resource_Frontcontroller</title>

    <para>
        Probablement la ressource que vous allez le plus communément charger avec
        <classname>Zend_Application</classname> sera la ressource de contrôleur frontal qui fournit
        la possibilité de configurer <classname>Zend_Controller_Front</classname>. Cette ressource
        permet de spécifier n'importe quel paramètre du contrôleur frontal, de spécifier les plugins
        à initialiser, et bien plus...
    </para>

    <para>
        Une fois initialisée, la ressource assigne la propriété <varname>$frontController</varname>
        du fichier d'initialisation à l'instance <classname>Zend_Controller_Front</classname>.
    </para>

    <para>
        Les clés de configuration disponibles incluent les suivantes et sont sensibles à la
        casse&#160;:
    </para>

    <itemizedlist>
        <listitem><para>
            <emphasis><property>controllerDirectory</property></emphasis>&#160;: une chaîne de
            caractères spécifiant un seul dossier de contrôleurs, ou un tableau associant un
            nom de module et un dossier de contrôleurs.
        </para></listitem>

        <listitem><para>
            <emphasis><property>moduleControllerDirectoryName</property></emphasis>&#160;: une
            chaîne de caractères indiquant un sous-dossier dans ce module qui contient les
            contrôleurs.
        </para></listitem>

        <listitem><para>
            <emphasis><property>moduleDirectory</property></emphasis>&#160;: un dossier dans
            lequel tous les modules peuvent être trouvés.
        </para></listitem>

        <listitem><para>
            <emphasis><property>defaultControllerName</property></emphasis>&#160;: nom du
            contrôleur par défaut (normalement "index").
        </para></listitem>

        <listitem><para>
            <emphasis><property>defaultAction</property></emphasis>&#160;: nom de l'action par
            défaut (normalement "index").
        </para></listitem>

        <listitem><para>
            <emphasis><property>defaultModule</property></emphasis>&#160;: nom du module par
            défaut (normalement "default").
        </para></listitem>

        <listitem><para>
            <emphasis><property>baseUrl</property></emphasis>&#160;: <acronym>URL</acronym>
            de base explicite vers l'application (normalement auto-détecté).
        </para></listitem>

        <listitem><para>
            <emphasis><property>plugins</property></emphasis>&#160;: tableau de nom de classe
            de plugins de contrôleurs. La ressource instanciera chaque classe (sans arguments
            de constructeur) et les enregistrera dans le contrôleur frontal. Si vous souhaitez
            enregistrer un plugin avec un index particulier dans la pile des plugins, vous
            devez fournir un tableau avec deux clés <property>class</property> et
            <property>stackIndex</property>.
        </para></listitem>

        <listitem><para>
            <emphasis><property>params</property></emphasis>&#160;: tableau de paires
            clés&#160;/&#160;valeurs à enregistrer dans le contrôleur frontal.
        </para></listitem>

        <listitem>
            <para>
                <emphasis><property>returnresponse</property></emphasis>&#160;: active ou non le
                retour de l'objet de réponse après la distribution du contrôleur frontal. Cette
                valeur devrait être booléenne&#160;; par défaut, ceci est désactivé.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>dispatcher</property></emphasis>>&#160;: permet de surcharger
                le distributeur par défaut. Possède 2 sous-clés, <property>class</property> (le
                nom de classe du nouveau distributeur) et <property>params</property>, un tableau
                de paramètres à fournir au constructeur du distributeur.
            </para>
            
            <example id="zend.application.available-resources.frontcontroller.configExample.1">
                <title>Surcharger le distributeur</title>

                <programlisting language="ini"><![CDATA[
[production]
resources.frontController.dispatcher.class = "My_Custom_Dispatcher"
resources.frontController.dispatcher.params.foo = "bar"
resources.frontController.dispatcher.params.baz = "grok"
]]></programlisting>
            </example>
        </listitem>
    </itemizedlist>

    <para>
        Si une clé non-connue est fournie, elle sera enregistrée comme paramètre du contrôleur
        frontal en la fournissant à <methodname>setParam()</methodname>.
    </para>

    <example id="zend.application.available-resources.frontcontroller.configExample.2">
        <title>Exemple de configuration d'une ressource de contrôleur frontal</title>

        <para>
            Voici un extrait de configuration <acronym>INI</acronym> montrant comment configurer
            la ressource de contrôleur frontal.
        </para>

        <programlisting language="ini"><![CDATA[
[production]
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleControllerDirectoryName = "actions"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultControllerName = "site"
resources.frontController.defaultAction = "home"
resources.frontController.defaultModule = "static"
resources.frontController.baseUrl = "/subdir"
resources.frontController.plugins.foo = "My_Plugin_Foo"
resources.frontController.plugins.bar = "My_Plugin_Bar"
resources.frontController.plugins.baz.class = "My_Plugin_Baz"
resources.frontController.plugins.baz.stackIndex = 123
resources.frontController.returnresponse = 1
resources.frontController.env = APPLICATION_ENV

;Ce qui suit proxie vers :
;Zend_Controller_Action_HelperBroker::addPath('Helper_Path', $helperPrefix);
resources.frontController.actionHelperPaths.HELPER_Prefix = "My/Helper/Path"
]]></programlisting>
    </example>

    <example id="zend.application.available-resources.frontcontroller.propertyExample">
        <title>Récupération de votre contrôleur frontal à partir de votre initialiseur</title>

        <para>
            Une fois la ressource de contrôleur frontal initialisée, vous pouvez récupérer
            l'instance via la propriété <varname>$frontController</varname> de votre initialiseur.
        </para>

        <programlisting language="php"><![CDATA[
$bootstrap->bootstrap('frontController');
$front = $bootstrap->frontController;
]]></programlisting>
    </example>
</sect2>
