1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
<?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 :
</para>
<itemizedlist>
<listitem><para>
<emphasis><property>controllerDirectory</property></emphasis> : 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> : 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> : un dossier dans
lequel tous les modules peuvent être trouvés.
</para></listitem>
<listitem><para>
<emphasis><property>defaultControllerName</property></emphasis> : nom du
contrôleur par défaut (normalement "index").
</para></listitem>
<listitem><para>
<emphasis><property>defaultAction</property></emphasis> : nom de l'action par
défaut (normalement "index").
</para></listitem>
<listitem><para>
<emphasis><property>defaultModule</property></emphasis> : nom du module par
défaut (normalement "default").
</para></listitem>
<listitem><para>
<emphasis><property>baseUrl</property></emphasis> : <acronym>URL</acronym>
de base explicite vers l'application (normalement auto-détecté).
</para></listitem>
<listitem><para>
<emphasis><property>plugins</property></emphasis> : 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> : tableau de paires
clés / valeurs à enregistrer dans le contrôleur frontal.
</para></listitem>
<listitem>
<para>
<emphasis><property>returnresponse</property></emphasis> : 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 ; par défaut, ceci est désactivé.
</para>
</listitem>
<listitem>
<para>
<emphasis><property>dispatcher</property></emphasis>> : 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>
|