|
|
@@ -7,7 +7,9 @@
|
|
|
<sect4 id="zend.controller.actionhelper.viewrenderer.introduction">
|
|
|
<title>Introduction</title>
|
|
|
|
|
|
- <para>L'aide <code>ViewRenderer</code> apporte les comportements suivants :</para>
|
|
|
+ <para>
|
|
|
+ L'aide <emphasis>ViewRenderer</emphasis> apporte les comportements suivants :
|
|
|
+ </para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
@@ -47,29 +49,32 @@
|
|
|
|
|
|
<note>
|
|
|
<para>
|
|
|
- Su vous utilisez <methodname>_forward()</methodname>, <methodname>redirect()</methodname>, ou
|
|
|
- <methodname>render()</methodname> manuellement, le rendu automatique sera annulé car
|
|
|
- <code>ViewRenderer</code> saura que vous prenez la main.
|
|
|
+ Su vous utilisez <methodname>_forward()</methodname>,
|
|
|
+ <methodname>redirect()</methodname>, ou <methodname>render()</methodname>
|
|
|
+ manuellement, le rendu automatique sera annulé car
|
|
|
+ <emphasis>ViewRenderer</emphasis> saura que vous prenez la main.
|
|
|
</para>
|
|
|
</note>
|
|
|
|
|
|
<note>
|
|
|
<para>
|
|
|
- Le <code>ViewRenderer</code> est activé par défaut dans le contrôleur
|
|
|
- frontal. Pour le désactiver, utilisez le paramètre <code>noViewRenderer</code>
|
|
|
- (<code>$front->setParam('noViewRenderer', true)</code>) ou retirez l'objet du
|
|
|
- gestionnaire d'aides
|
|
|
+ Le <emphasis>ViewRenderer</emphasis> est activé par défaut dans le contrôleur
|
|
|
+ frontal. Pour le désactiver, utilisez le paramètre
|
|
|
+ <emphasis>noViewRenderer</emphasis>
|
|
|
+ (<command>$front->setParam('noViewRenderer', true);</command>) ou retirez
|
|
|
+ l'objet du gestionnaire d'aides
|
|
|
(<methodname>Zend_Controller_Action_HelperBroker::removeHelper('viewRenderer')</methodname>).
|
|
|
</para>
|
|
|
<para>
|
|
|
- Si vous voulez modifier un paramètre du <code>ViewRenderer</code> avant la
|
|
|
+ Si vous voulez modifier un paramètre du <emphasis>ViewRenderer</emphasis> avant la
|
|
|
distribution du contrôleur frontal, il existe deux moyens :
|
|
|
</para>
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
Instanciez et enregistrez votre propre objet
|
|
|
- <code>ViewRenderer</code> et passez le au gestionnaire d'aides :
|
|
|
+ <emphasis>ViewRenderer</emphasis> et passez le au gestionnaire
|
|
|
+ d'aides :
|
|
|
</para>
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
|
|
|
@@ -80,8 +85,8 @@ Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- Initialisez et/ou récupérez l'objet <code>ViewRenderer</code> via le
|
|
|
- gestionnaire d'aides :
|
|
|
+ Initialisez et/ou récupérez l'objet
|
|
|
+ <emphasis>ViewRenderer</emphasis> via le gestionnaire d'aides :
|
|
|
</para>
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$viewRenderer =
|
|
|
@@ -99,9 +104,9 @@ $viewRenderer->setView($view)
|
|
|
|
|
|
<para>
|
|
|
L'usage le plus banal consiste à instancier et passer l'objet
|
|
|
- <code>ViewRenderer</code> au gestionnaire d'aides. La manière la plus simple est
|
|
|
- d'utiliser la méthode statique <methodname>getStaticHelper()</methodname> du gestionnaire, qui
|
|
|
- s'occupe de tout ceci en une passe :
|
|
|
+ <emphasis>ViewRenderer</emphasis> au gestionnaire d'aides. La manière la plus simple
|
|
|
+ est d'utiliser la méthode statique <methodname>getStaticHelper()</methodname>
|
|
|
+ du gestionnaire, qui s'occupe de tout ceci en une passe :
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -109,16 +114,18 @@ Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- La première action demandée instancie ou récupère l'objet de vue. A chaque
|
|
|
- instanciation de contrôleur, la méthode <methodname>init()</methodname> de l'objet
|
|
|
- <code>ViewRenderer</code> est appelée. Elle va configurer la vue et appeler
|
|
|
- <methodname>addScriptPath()</methodname> avec un chemin relatif au dossier courant. Ceci a pour
|
|
|
- effet de "namespacer" toutes les aides et les filtres de vue pour le module en
|
|
|
- cours.
|
|
|
+ La première action demandée déclenche l'instanciation de l'objet de vue par le
|
|
|
+ <emphasis>ViewRenderer</emphasis>. A chaque instanciation de contrôleur, la
|
|
|
+ méthode <methodname>init()</methodname> de l'objet
|
|
|
+ <emphasis>ViewRenderer</emphasis> est appelée. Elle va configurer la vue et appeler
|
|
|
+ <methodname>addScriptPath()</methodname> avec un chemin relatif au dossier courant.
|
|
|
+ Ceci a pour effet de "namespacer" toutes les aides et les filtres de vue pour le
|
|
|
+ module en cours.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- A chaque <methodname>postDispatch()</methodname> d'action, <methodname>render()</methodname> est appelée.
|
|
|
+ A chaque <methodname>postDispatch()</methodname> d'action,
|
|
|
+ <methodname>render()</methodname> est appelée.
|
|
|
</para>
|
|
|
|
|
|
<para>Voici un exemple :</para>
|
|
|
@@ -148,59 +155,66 @@ $this->foo(); // appelle Foo_View_Helper_Foo::foo()
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Le <code>ViewRenderer</code> définit de même des accesseurs pour configurer la
|
|
|
+ Le <emphasis>ViewRenderer</emphasis> définit de même des accesseurs pour configurer la
|
|
|
vue qu'il encapsule :
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setView($view)</methodname> Passage de l'objet de vue. Il devient
|
|
|
- accessible comme une propriété publique de l'objet : <varname>$view</varname>.
|
|
|
+ <methodname>setView($view)</methodname> Passage de l'objet de vue au
|
|
|
+ <emphasis>ViewRenderer</emphasis>. Il devient accessible comme une propriété
|
|
|
+ publique de l'objet : <varname>$view</varname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
<methodname>setNeverRender($flag = true)</methodname> peut être utilisée pour
|
|
|
désactiver le rendu automatique de la vue dans tous les contrôleurs.
|
|
|
- <methodname>postDispatch()</methodname> est alors court-circuitée.
|
|
|
+ Si réglé à <constant>TRUE</constant>
|
|
|
+ <methodname>postDispatch()</methodname> ne va pa automatiquement appeler
|
|
|
+ <methodname>render()</methodname> dans le contrôleur courant.
|
|
|
<methodname>getNeverRender()</methodname> retourne ce paramètre.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setNoRender($flag = true)</methodname> peut être utilisée pour désactiver
|
|
|
- le rendu automatique de la vue dans le contrôleur actuel.
|
|
|
- <methodname>postDispatch()</methodname> est alors court-circuitée, mais
|
|
|
- <methodname>preDispatch()</methodname> réactive le paramètre pour l'action suivante.
|
|
|
- <methodname>getNoRender()</methodname> retourne cette option.
|
|
|
+ <methodname>setNoRender($flag = true)</methodname> peut être utilisée pour
|
|
|
+ désactiver le rendu automatique de la vue dans le contrôleur actuel.
|
|
|
+ Si réglé à <constant>TRUE</constant>
|
|
|
+ <methodname>postDispatch()</methodname> ne va pa automatiquement appeler
|
|
|
+ <methodname>render()</methodname> dans le contrôleur courant, mais
|
|
|
+ <methodname>preDispatch()</methodname> réactive le paramètre pour l'action
|
|
|
+ suivante. <methodname>getNoRender()</methodname> retourne cette option.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setNoController($flag = true)</methodname> est utilisée pour spécifier à
|
|
|
- <methodname>render()</methodname> de ne pas chercher le script de vue dans le sous
|
|
|
- répertoire après le contrôleur (correspondant à l'action). Par défaut, cette
|
|
|
- recherche est effectuée. <methodname>getNoController()</methodname> retourne ce
|
|
|
- paramètre.
|
|
|
+ <methodname>setNoController($flag = true)</methodname> est utilisée pour
|
|
|
+ spécifier à <methodname>render()</methodname> de ne pas chercher le script
|
|
|
+ de vue dans le sous répertoire après le contrôleur (correspondant à l'action).
|
|
|
+ Par défaut, cette recherche est effectuée.
|
|
|
+ <methodname>getNoController()</methodname> retourne ce paramètre.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
<methodname>setNeverController($flag = true)</methodname> fonctionne de manière
|
|
|
similaire à <methodname>setNoController()</methodname>, mais pour tous les
|
|
|
- contrôleurs.<methodname>getNeverController()</methodname> est l'autre accesseur.
|
|
|
+ contrôleurs.<methodname>getNeverController()</methodname> est l'autre
|
|
|
+ accesseur.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setScriptAction($name)</methodname> peut être utilisée pour spécifier le
|
|
|
- script de vue d'une action à rendre. <varname>$name</varname> doit être le nom de
|
|
|
- l'action sans le suffixe (et sans le nom du contrôleur sauf si
|
|
|
- <code>noController</code> a été activé). Si vous n'utilisez pas cette méthode
|
|
|
- elle cherchera le script de vue correspondant au nom de l'action en cours
|
|
|
- (issue de l'objet de requête). <methodname>getScriptAction()</methodname> retourne la
|
|
|
- valeur actuelle de ce paramètre.
|
|
|
+ <methodname>setScriptAction($name)</methodname> peut être utilisée pour
|
|
|
+ spécifier le script de vue d'une action à rendre. <varname>$name</varname>
|
|
|
+ doit être le nom de l'action sans le suffixe (et sans le nom du contrôleur
|
|
|
+ sauf si <emphasis>noController</emphasis> a été activé). Si vous n'utilisez
|
|
|
+ pas cette méthode elle cherchera le script de vue correspondant au nom de
|
|
|
+ l'action en cours (issue de l'objet de requête).
|
|
|
+ <methodname>getScriptAction()</methodname> retourne la valeur actuelle de ce
|
|
|
+ paramètre.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
@@ -212,20 +226,22 @@ $this->foo(); // appelle Foo_View_Helper_Foo::foo()
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>initView($path, $prefix, $options)</methodname> doit être appelée pour
|
|
|
- configurer la vue : son "base path", le préfixe de classe pour les filtres et
|
|
|
- aides, et des options matérialisées par : <code>neverRender</code>,
|
|
|
- <code>noRender</code>, <code>noController</code>, <code>scriptAction</code>, et
|
|
|
- <code>responseSegment</code>.
|
|
|
+ <methodname>initView($path, $prefix, $options)</methodname> doit être appelée
|
|
|
+ pour configurer la vue : son "base path", le préfixe de classe pour les filtres
|
|
|
+ et aides, et des options du <emphasis>ViewRenderer</emphasis> matérialisées
|
|
|
+ par : <emphasis>neverRender</emphasis>, <emphasis>noRender</emphasis>,
|
|
|
+ <emphasis>noController</emphasis>, <emphasis>scriptAction</emphasis>, et
|
|
|
+ <emphasis>responseSegment</emphasis>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <code>setRender($action = null, $name = null, $noController =
|
|
|
- false)</code> vous permet de spécifier les paramètres
|
|
|
- <code>scriptAction</code>, <code>responseSegment</code>, et
|
|
|
- <code>noController</code> en une fois. <methodname>direct()</methodname> est un alias qui
|
|
|
- permet un appel rapide depuis le contrôleur :
|
|
|
+ <methodname>setRender($action = null, $name = null, $noController =
|
|
|
+ false)</methodname> vous permet de spécifier les paramètres
|
|
|
+ <emphasis>scriptAction</emphasis>, <emphasis>responseSegment</emphasis>, et
|
|
|
+ <emphasis>noController</emphasis> en une fois.
|
|
|
+ <methodname>direct()</methodname> est un alias qui permet un appel rapide
|
|
|
+ depuis le contrôleur :
|
|
|
</para>
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
// Rend 'foo' au lieu du script correspondant à l'action courante
|
|
|
@@ -237,17 +253,18 @@ $this->_helper->viewRenderer('form', 'html', true);
|
|
|
]]></programlisting>
|
|
|
<note>
|
|
|
<para>
|
|
|
- <methodname>setRender()</methodname> et <methodname>direct()</methodname> ne rendent pas un
|
|
|
- script de vue à proprement parler, mais elles notifient au
|
|
|
- <methodname>postDispatch()</methodname> de le faire.
|
|
|
+ <methodname>setRender()</methodname> et <methodname>direct()</methodname>
|
|
|
+ ne rendent pas un script de vue à proprement parler, mais elles notifient
|
|
|
+ au <methodname>postDispatch()</methodname> et
|
|
|
+ <methodname>render()</methodname> sera utilisée pour le faire.
|
|
|
</para>
|
|
|
</note>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>
|
|
|
- Le constructeur de <code>ViewRenderer</code> accepte aussi un objet de vue et un
|
|
|
- tableau d'options, de la même manière que <methodname>initView()</methodname> :
|
|
|
+ Le constructeur de <emphasis>ViewRenderer</emphasis> accepte aussi un objet de vue et
|
|
|
+ un tableau d'options, de la même manière que <methodname>initView()</methodname> :
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -266,22 +283,22 @@ $viewRenderer =
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <code>:moduleDir</code> représente le module courant (par convention le
|
|
|
+ <emphasis>:moduleDir</emphasis> représente le module courant (par convention le
|
|
|
dossier parent au dossier contrôleur).
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
- <para><code>:module</code> pointe vers le module actuel.</para>
|
|
|
+ <para><emphasis>:module</emphasis> pointe vers le module actuel.</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
- <para><code>:controller</code> pointe vers le contrôleur actuel.</para>
|
|
|
+ <para><emphasis>:controller</emphasis> pointe vers le contrôleur actuel.</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
- <para><code>:action</code> représente l'action actuellement traitée.</para>
|
|
|
+ <para><emphasis>:action</emphasis> représente l'action actuellement traitée.</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <code>:suffix</code> est utilisée pour le suffixe du script de vue.
|
|
|
+ <emphasis>:suffix</emphasis> est utilisée pour le suffixe du script de vue.
|
|
|
<methodname>setViewSuffix()</methodname> permet aussi de le modifier.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
@@ -292,33 +309,34 @@ $viewRenderer =
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setViewBasePathSpec($spec)</methodname> vous permet de changer le dossier
|
|
|
- donnant accès aux dossiers de la vue : le base path. Par défaut il s'agit
|
|
|
- de <code>:moduleDir/views</code>. L'accesseur de récupération est
|
|
|
- <methodname>getViewBasePathSpec()</methodname>.
|
|
|
+ <methodname>setViewBasePathSpec($spec)</methodname> vous permet de changer le
|
|
|
+ dossier donnant accès aux dossiers de la vue : le base path. Par défaut
|
|
|
+ il s'agit de <filename>:moduleDir/views</filename>. L'accesseur de récupération
|
|
|
+ est <methodname>getViewBasePathSpec()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setViewScriptPathSpec($spec)</methodname> : une fois dans le base path, le
|
|
|
- rendu cherche le script de vue dans le script path, que cette méthode permet de
|
|
|
- définir. La valeur par défaut est <code>:controller/:action.:suffix</code> et
|
|
|
+ <methodname>setViewScriptPathSpec($spec)</methodname> : une fois dans le base
|
|
|
+ path, le rendu cherche le script de vue dans le script path, que cette méthode
|
|
|
+ permet de définir. La valeur par défaut est
|
|
|
+ <filename>:controller/:action.:suffix</filename> et
|
|
|
l'autre accesseur est <methodname>getViewScriptPathSpec()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setViewScriptPathNoControllerSpec($spec)</methodname> Une fois dans le
|
|
|
- base path, si <code>noController</code> est activé, le rendu cherche le script
|
|
|
- de vue dans le chemin que cette méthode permet de définir. La valeur par défaut
|
|
|
- est <code>:action.:suffix</code> et l'autre accesseur est
|
|
|
- <methodname>getViewScriptPathNoControllerSpec()</methodname>.
|
|
|
+ <methodname>setViewScriptPathNoControllerSpec($spec)</methodname> Une fois
|
|
|
+ dans le base path, si <emphasis>noController</emphasis> est activé, le rendu
|
|
|
+ cherche le script de vue dans le chemin que cette méthode permet de définir.
|
|
|
+ La valeur par défaut est <filename>:action.:suffix</filename> et l'autre
|
|
|
+ accesseur est <methodname>getViewScriptPathNoControllerSpec()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>
|
|
|
- <code>ViewRenderer</code> utilise un inflecteur :
|
|
|
+ <emphasis>ViewRenderer</emphasis> utilise un inflecteur :
|
|
|
<link linkend="zend.filter.inflector">Zend_Filter_Inflector</link>, pour résoudre les
|
|
|
options de chemin, en chemins réels. Pour une personnalisation maximale, vous pouvez
|
|
|
interagir avec cet inflecteur à l'aide des méthodes suivantes :
|
|
|
@@ -327,22 +345,24 @@ $viewRenderer =
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getInflector()</methodname> retourne l'inflecteur. Si aucun n'existe,
|
|
|
- <code>ViewRenderer</code> en crée un avec des options par défaut.
|
|
|
+ <methodname>getInflector()</methodname> retourne l'inflecteur. Si aucun
|
|
|
+ n'existe, <emphasis>ViewRenderer</emphasis> en crée un avec des options par
|
|
|
+ défaut.
|
|
|
</para>
|
|
|
<para>
|
|
|
Par défaut, les règles de l'inflecteur sont statiques autant pour le
|
|
|
suffixe et le répertoire module, que pour la cible. Ceci permet au
|
|
|
- <code>ViewRenderer</code> de modifier ces valeurs dynamiquement.
|
|
|
+ <emphasis>ViewRenderer</emphasis> de modifier ces valeurs dynamiquement.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setInflector($inflector, $reference)</methodname> peut être utilisée pour
|
|
|
- passer son propre inflecteur à <code>ViewRenderer</code>. Si
|
|
|
- <varname>$reference</varname> est à <constant>TRUE</constant>, alors le suffixe, le
|
|
|
- répertoire du module et la cible seront affectés en fonction des propriétés de
|
|
|
- <code>ViewRenderer</code>.
|
|
|
+ <methodname>setInflector($inflector, $reference)</methodname> peut être
|
|
|
+ utilisée pour passer son propre inflecteur à
|
|
|
+ <emphasis>ViewRenderer</emphasis>. Si <varname>$reference</varname> est à
|
|
|
+ <constant>TRUE</constant>, alors le suffixe, le répertoire du module et
|
|
|
+ la cible seront affectés en fonction des propriétés de
|
|
|
+ <emphasis>ViewRenderer</emphasis>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
@@ -350,15 +370,15 @@ $viewRenderer =
|
|
|
<note>
|
|
|
<title>Règles de résolution par défaut</title>
|
|
|
<para>
|
|
|
- Le <code>ViewRenderer</code> utilise certaines règles par défaut pour
|
|
|
+ Le <emphasis>ViewRenderer</emphasis> utilise certaines règles par défaut pour
|
|
|
chercher ses scripts de vue, voyez plutôt :
|
|
|
</para>
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <code>:module</code> : casseMélangée et motsEnNotationCamel qui
|
|
|
- deviennent des mots séparés par des tirets, et en minuscules. "FooBarBaz"
|
|
|
- devient "foo-bar-baz".
|
|
|
+ <emphasis>:module</emphasis> : casseMélangée et motsEnNotationCamel
|
|
|
+ qui deviennent des mots séparés par des tirets, et en minuscules.
|
|
|
+ "FooBarBaz" devient "foo-bar-baz".
|
|
|
</para>
|
|
|
<para>
|
|
|
En interne, l'inflecteur utilise les filtres
|
|
|
@@ -368,10 +388,12 @@ $viewRenderer =
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <code>:controller</code> : casseMélangée et motsEnNotationCamel qui
|
|
|
- deviennent des mots séparés par des tirets; les tirets bas eux, se
|
|
|
- transforment en séparateur de dossier et tout est passé en minuscules.
|
|
|
- "FooBar" devient "foo-bar"; "FooBar_Admin" devient "foo-bar/admin".
|
|
|
+ <emphasis>:controller</emphasis> : casseMélangée et
|
|
|
+ motsEnNotationCamel qui deviennent des mots séparés par des tirets ;
|
|
|
+ les tirets bas eux, se transforment en séparateur de dossier et tout est
|
|
|
+ passé en minuscules. "<classname>FooBar</classname>" devient
|
|
|
+ "foo-bar" ; "<classname>FooBar_Admin</classname>"
|
|
|
+ devient "<filename>foo-bar/admin</filename>".
|
|
|
</para>
|
|
|
<para>
|
|
|
En interne, l'inflecteur utilise les filtres
|
|
|
@@ -382,10 +404,10 @@ $viewRenderer =
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <code>:action</code> : casseMélangée et motsEnNotationCamel qui se
|
|
|
- transforment en mots séparés par des tirets, minuscules. Les caractères non
|
|
|
- alphanumériques deviennent des tirets. "fooBar" devient "foo-bar";
|
|
|
- "foo-barBaz" devient "foo-bar-baz".
|
|
|
+ <emphasis>:action</emphasis> : casseMélangée et motsEnNotationCamel
|
|
|
+ qui se transforment en mots séparés par des tirets, minuscules. Les
|
|
|
+ caractères non alphanumériques deviennent des tirets. "fooBar" devient
|
|
|
+ "foo-bar" ; "foo-barBaz" devient "foo-bar-baz".
|
|
|
</para>
|
|
|
<para>
|
|
|
Pour ceci, l'inflecteur interne utilise les filtres
|
|
|
@@ -398,48 +420,52 @@ $viewRenderer =
|
|
|
</note>
|
|
|
|
|
|
<para>
|
|
|
- Enfin, l'API <code>ViewRenderer</code> vous propose aussi des méthodes pour
|
|
|
- déterminer les scripts de vue, et rendre la vue. Celles-ci se décomposent en :
|
|
|
+ Enfin, l'<acronym>API</acronym> de <emphasis>ViewRenderer</emphasis> vous propose
|
|
|
+ aussi des méthodes pour déterminer les scripts de vue, et rendre la vue. Celles-ci
|
|
|
+ se décomposent en :
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>renderScript($script, $name)</methodname> va vous permettre de spécifier
|
|
|
- pleinement le script de vue à rendre, et éventuellement un nom de segment de
|
|
|
- réponse dans lequel rendre. <code>ViewRenderer</code> s'attend à un paramètre
|
|
|
- <varname>$script</varname> représentant un chemin complet vers un script de vue,
|
|
|
- telle que la méthode de la vue <methodname>render()</methodname> l'attend.
|
|
|
+ <methodname>renderScript($script, $name)</methodname> va vous permettre de
|
|
|
+ spécifier pleinement le script de vue à rendre, et éventuellement un nom de
|
|
|
+ segment de réponse dans lequel rendre. <emphasis>ViewRenderer</emphasis>
|
|
|
+ s'attend à un paramètre <varname>$script</varname> représentant un chemin
|
|
|
+ complet vers un script de vue, telle que la méthode de la vue
|
|
|
+ <methodname>render()</methodname> l'attend.
|
|
|
</para>
|
|
|
<note>
|
|
|
<para>
|
|
|
- Une fois rendue, la vue utilise <code>noRender</code> pour éviter un
|
|
|
- double rendu automatisé.
|
|
|
+ Une fois rendue, la vue utilise <emphasis>noRender</emphasis> pour éviter
|
|
|
+ un double rendu automatisé.
|
|
|
</para>
|
|
|
</note>
|
|
|
<note>
|
|
|
<para>
|
|
|
Par défaut, <methodname>Zend_Controller_Action::renderScript()</methodname>
|
|
|
est un proxy vers la méthode <methodname>renderScript()</methodname> de
|
|
|
- <code>ViewRenderer</code>.
|
|
|
+ <emphasis>ViewRenderer</emphasis>.
|
|
|
</para>
|
|
|
</note>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getViewScript($action, $vars)</methodname> récupère le chemin du script
|
|
|
- de vue en se basant sur les paramètres $action et $vars. <varname>$vars</varname>
|
|
|
- peut contenir "moduleDir", "module", "controller", "action", et "suffix"),
|
|
|
- sinon les valeurs de la requête actuelle seront utilisées.
|
|
|
+ <methodname>getViewScript($action, $vars)</methodname> récupère le chemin du
|
|
|
+ script de vue en se basant sur les paramètres $action et $vars.
|
|
|
+ <varname>$vars</varname> peut contenir "moduleDir", "module", "controller",
|
|
|
+ "action", et "suffix"), sinon les valeurs de la requête actuelle seront
|
|
|
+ utilisées.
|
|
|
</para>
|
|
|
<para>
|
|
|
- <methodname>getViewScript()</methodname> utilisera <code>viewScriptPathSpec</code> ou
|
|
|
- <code>viewScriptPathNoControllerSpec</code> selon le paramètre
|
|
|
- <code>noController</code>.
|
|
|
+ <methodname>getViewScript()</methodname> utilisera
|
|
|
+ <emphasis>viewScriptPathSpec</emphasis> ou
|
|
|
+ <emphasis>viewScriptPathNoControllerSpec</emphasis> selon le paramètre
|
|
|
+ <emphasis>noController</emphasis>.
|
|
|
</para>
|
|
|
<para>
|
|
|
Les délimiteurs apparaissant dans les modules, contrôleurs ou actions seront
|
|
|
- remplacés par des tirets ("-"). Ainsi pour un un contrôleur
|
|
|
+ remplacés par des tirets ("-"). Ainsi pour un contrôleur
|
|
|
"<command>foo.bar</command>" et une action "<command>baz:bat</command>", il
|
|
|
résultera un chemin de vue "<filename>foo-bar/baz-bat.phtml</filename>".
|
|
|
</para>
|
|
|
@@ -447,7 +473,7 @@ $viewRenderer =
|
|
|
<para>
|
|
|
Par défaut <methodname>Zend_Controller_Action::getViewScript()</methodname>
|
|
|
est un proxy vers la méthode <methodname>getViewScript()</methodname> de
|
|
|
- <code>ViewRenderer</code>.
|
|
|
+ <emphasis>ViewRenderer</emphasis>.
|
|
|
</para>
|
|
|
</note>
|
|
|
</listitem>
|
|
|
@@ -455,34 +481,37 @@ $viewRenderer =
|
|
|
<para>
|
|
|
<methodname>render($action, $name, $noController)</methodname> a beaucoup de
|
|
|
responsabilités : d'abord, elle vérifie si <varname>$name</varname> ou
|
|
|
- <varname>$noController</varname> lui ont été passés, si c'est le cas, elle configure
|
|
|
- correctement les paramètres <code>responseSegment</code> et
|
|
|
+ <varname>$noController</varname> lui ont été passés, si c'est le cas, elle
|
|
|
+ configure correctement les paramètres <code>responseSegment</code> et
|
|
|
<code>noController</code> dans le ViewRenderer. Elle passe ensuite
|
|
|
- <varname>$action</varname>, si spécifié, à <methodname>getViewScript()</methodname>. Enfin, elle
|
|
|
+ <varname>$action</varname>, si spécifié, à
|
|
|
+ <methodname>getViewScript()</methodname>. Enfin, elle
|
|
|
passe le script de vue calculé à <methodname>renderScript()</methodname>.
|
|
|
</para>
|
|
|
<note>
|
|
|
<para>
|
|
|
- Attention aux effets secondaires avec <methodname>render()</methodname> : les
|
|
|
- valeurs segment de réponse, et <code>noController</code> vont persister
|
|
|
- dans l'objet ViewRenderer. De plus, <methodname>noRender()</methodname> va être
|
|
|
- appelée.
|
|
|
+ Attention aux effets secondaires avec
|
|
|
+ <methodname>render()</methodname> : les valeurs segment de réponse,
|
|
|
+ et <code>noController</code> vont persister dans l'objet ViewRenderer.
|
|
|
+ De plus, <methodname>noRender()</methodname> va être appelée.
|
|
|
</para>
|
|
|
</note>
|
|
|
<note>
|
|
|
<para>
|
|
|
Par défaut, <methodname>Zend_Controller_Action::render()</methodname>
|
|
|
- est un proxy vers <methodname>render()</methodname> de <code>ViewRenderer</code>.
|
|
|
+ est un proxy vers <methodname>render()</methodname> de
|
|
|
+ <emphasis>ViewRenderer</emphasis>.
|
|
|
</para>
|
|
|
</note>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>renderBySpec($action, $vars, $name)</methodname> vous fournit le moyen de
|
|
|
- passer des paramètres de spécification pour le dossier de script de vue. Cette
|
|
|
- méthode passe <varname>$action</varname> et <varname>$vars</varname> à
|
|
|
- <methodname>getScriptPath()</methodname>, pour en déduire un chemin qu'elle envoie alors
|
|
|
- avec <varname>$name</varname> à <methodname>renderScript()</methodname>.
|
|
|
+ <methodname>renderBySpec($action, $vars, $name)</methodname> vous fournit le
|
|
|
+ moyen de passer des paramètres de spécification pour le dossier de script de
|
|
|
+ vue. Cette méthode passe <varname>$action</varname> et <varname>$vars</varname>
|
|
|
+ à <methodname>getScriptPath()</methodname>, pour en déduire un chemin qu'elle
|
|
|
+ envoie alors avec <varname>$name</varname> à
|
|
|
+ <methodname>renderScript()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
@@ -496,8 +525,8 @@ $viewRenderer =
|
|
|
|
|
|
<para>
|
|
|
L'utilisation la plus basique consiste à initialiser ou et enregistrer un
|
|
|
- objet <code>ViewRenderer</code> dans le gestionnaire d'aides (helper broker), et
|
|
|
- ensuite lui passer des variables dans vos contrôleurs.
|
|
|
+ objet <emphasis>ViewRenderer</emphasis> dans le gestionnaire d'aides (helper
|
|
|
+ broker), et ensuite lui passer des variables dans vos contrôleurs.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -544,20 +573,22 @@ class Foo_BarController extends Zend_Controller_Action
|
|
|
<para>
|
|
|
Si les noms de votre contrôleur ou de votre action sont composés de plusieurs
|
|
|
mots, le distributeur s'attend à ce qu'ils soient séparés par des caractères bien
|
|
|
- définis, dans l'URL. Le <code>ViewRenderer</code> les transforme alors en '/' pour
|
|
|
- les chemins, ou tirets '-' pour les mots. Ainsi, un appel à
|
|
|
- <code>/foo.bar/baz.bat</code> distribuera
|
|
|
- <methodname>FooBarController::bazBatAction()</methodname> dans FooBarController.php, et ceci
|
|
|
- rendra <code>foo-bar/baz-bat.phtml</code>. Un appel à <code>/bar_baz/baz-bat</code>
|
|
|
- distribuera vers <methodname>Bar_BazController::bazBatAction()</methodname> dans
|
|
|
- <code>Bar/BazController.php</code> (notez la séparation du chemin), et rend
|
|
|
- <code>bar/baz/baz-bat.phtml</code>.
|
|
|
+ définis, dans l'<acronym>URL</acronym>. Le <emphasis>ViewRenderer</emphasis> les
|
|
|
+ transforme alors en '/' pour les chemins, ou tirets '-' pour les mots. Ainsi, un
|
|
|
+ appel à <filename>/foo.bar/baz.bat</filename> distribuera
|
|
|
+ <methodname>FooBarController::bazBatAction()</methodname> dans
|
|
|
+ <filename>FooBarController.php</filename>, et ceci rendra
|
|
|
+ <filename>foo-bar/baz-bat.phtml</filename>. Un appel à
|
|
|
+ <filename>/bar_baz/baz-bat</filename> distribuera vers
|
|
|
+ <methodname>Bar_BazController::bazBatAction()</methodname> dans
|
|
|
+ <filename>Bar/BazController.php</filename> (notez la séparation du chemin),
|
|
|
+ et rend <filename>bar/baz/baz-bat.phtml</filename>.
|
|
|
</para>
|
|
|
<para>
|
|
|
Notez dans le second exemple, le module est celui par défaut, mais comme un
|
|
|
séparateur de chemin (tiret bas ou "_") est donné, alors le contrôleur distribué
|
|
|
devient <classname>Bar_BazController</classname>, dans
|
|
|
- <code>Bar/BazController.php</code>.
|
|
|
+ <filename>Bar/BazController.php</filename>.
|
|
|
</para>
|
|
|
</note>
|
|
|
|
|
|
@@ -567,8 +598,10 @@ class Foo_BarController extends Zend_Controller_Action
|
|
|
<para>
|
|
|
Il peut être nécessaire dans certains cas de désactiver manuellement le rendu
|
|
|
automatique de vue effectué par ViewRenderer. Par exemple, si le contrôleur doit
|
|
|
- retourner une sortie spéciale, comme <acronym>XML</acronym> ou <acronym>JSON</acronym>. Deux options s'offrent à vous :
|
|
|
- <methodname>setNeverRender()</methodname>) et <methodname>setNoRender()</methodname>.
|
|
|
+ retourner une sortie spéciale, comme <acronym>XML</acronym> ou
|
|
|
+ <acronym>JSON</acronym>. Deux options s'offrent à vous :
|
|
|
+ <methodname>setNeverRender()</methodname>) et
|
|
|
+ <methodname>setNoRender()</methodname>.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -596,9 +629,9 @@ class Bar_BatController extends Zend_Controller_Action
|
|
|
|
|
|
<note>
|
|
|
<para>
|
|
|
- Utiliser <methodname>setNeverRender()</methodname>), pour désactiver totalement le rendu
|
|
|
- automatique de vue vous fera perdre un des avantages majeur de
|
|
|
- <code>ViewRenderer</code>.
|
|
|
+ Utiliser <methodname>setNeverRender()</methodname>), pour désactiver totalement
|
|
|
+ le rendu automatique de vue vous fera perdre un des avantages majeur de
|
|
|
+ <emphasis>ViewRenderer</emphasis>.
|
|
|
</para>
|
|
|
</note>
|
|
|
|
|
|
@@ -610,8 +643,9 @@ class Bar_BatController extends Zend_Controller_Action
|
|
|
différent de celui correspondant à l'action en cours de distribution. Par exemple,
|
|
|
un contrôleur qui possède deux actions ajout et édition, qui sont susceptibles
|
|
|
toutes les deux de rendre le même script de vue. Utilisez alors
|
|
|
- <methodname>setScriptAction()</methodname>, <methodname>setRender()</methodname>, ou appelez l'aide
|
|
|
- ViewRenderer directement :
|
|
|
+ <methodname>setScriptAction()</methodname>, <methodname>setRender()</methodname>,
|
|
|
+ ou appelez directement l'aide ViewRenderer qui invoquera
|
|
|
+ <methodname>setRender()</methodname> :
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -652,7 +686,7 @@ class Foo_BarController extends Zend_Controller_Action
|
|
|
Si vous désirez modifier l'objet de vue absorbé par
|
|
|
<code>ViewRenderer</code>, pour par exemple ajouter un chemin vers des aides
|
|
|
spécifique, ou spécifier l'encodage, vous pourriez par exemple récupérer l'objet de
|
|
|
- vue depuis le <code>ViewRenderer</code>, ou dans un contrôleur.
|
|
|
+ vue depuis le <emphasis>ViewRenderer</emphasis>, ou dans un contrôleur.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -691,10 +725,12 @@ class Foo_BarController extends Zend_Controller_Action
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Pour ceci, imaginons que le base path soit fixé à "/opt/vendor/templates", et
|
|
|
+ Pour ceci, imaginons que le base path soit fixé à
|
|
|
+ "<filename>/opt/vendor/templates</filename>", et
|
|
|
que vous voulez que vos scripts de vues soit référencés par
|
|
|
- ":moduleDir/:controller/:action.:suffix"; si le paramètre <code>noController</code>
|
|
|
- est activé, vous désirez utiliser le dossier plus haut ":action.:suffix". Enfin,
|
|
|
+ "<filename>:moduleDir/:controller/:action.:suffix</filename>"; si le paramètre
|
|
|
+ <emphasis>noController</emphasis> est activé, vous désirez utiliser le dossier
|
|
|
+ plus haut "<filename>:action.:suffix</filename>". Enfin,
|
|
|
vous désirez un suffixe en "tpl" :
|
|
|
</para>
|
|
|
|