|
|
@@ -5,9 +5,9 @@
|
|
|
<title>ContextSwitch et AjaxContext</title>
|
|
|
|
|
|
<para>
|
|
|
- L'aide d'action <code>ContextSwitch</code> est destinée à faciliter le retour de
|
|
|
- différents formats de réponse à une requête.L'<code>AjaxContext</code> est une aide
|
|
|
- spécialisée de <code>ContextSwitch</code> qui permet le renvoi de réponses à
|
|
|
+ L'aide d'action <emphasis>ContextSwitch</emphasis> est destinée à faciliter le retour de
|
|
|
+ différents formats de réponse à une requête.L'<emphasis>AjaxContext</emphasis> est une aide
|
|
|
+ spécialisée de <emphasis>ContextSwitch</emphasis> qui permet le renvoi de réponses à
|
|
|
XmlHttpRequest.
|
|
|
</para>
|
|
|
|
|
|
@@ -20,8 +20,7 @@
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- Va désactiver les Layouts, si elles sont activées
|
|
|
- (<classname>Zend_Layout</classname>).
|
|
|
+ Va désactiver les layouts, si elles sont activées.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
@@ -73,9 +72,9 @@ class NewsController extends Zend_Controller_Action
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Imaginons que nous voulions que <methodname>listAction()</methodname> soit aussi accessible au
|
|
|
- format <acronym>XML</acronym>. Plutôt que de créer une autre action, nous pouvons lui indiquer qu'elle doit
|
|
|
- retourner du <acronym>XML</acronym> :
|
|
|
+ Imaginons que nous voulions que <methodname>listAction()</methodname> soit aussi accessible
|
|
|
+ au format <acronym>XML</acronym>. Plutôt que de créer une autre action, nous pouvons lui
|
|
|
+ indiquer qu'elle doit retourner du <acronym>XML</acronym> :
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -96,19 +95,22 @@ class NewsController extends Zend_Controller_Action
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
- <para>De changer le "Content-Type" de la réponse en "text/xml".</para>
|
|
|
+ <para>
|
|
|
+ De changer le "Content-Type" de la réponse en "<filename>text/xml</filename>".
|
|
|
+ </para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- De changer le suffixe de vue vers "xml.phtml" (ou un autre suffixe si vous en
|
|
|
- utilisez un personnalisé "xml.[votre suffixe]").
|
|
|
+ De changer le suffixe de vue vers "<filename>xml.phtml</filename>" (ou un autre
|
|
|
+ suffixe si vous en utilisez un personnalisé "xml.[votre suffixe]").
|
|
|
</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>
|
|
|
- Il est donc nécessaire de créer un nouveau script de vue, "news/list.xml.phtml", qui
|
|
|
- créera et rendra le <acronym>XML</acronym>.
|
|
|
+ Il est donc nécessaire de créer un nouveau script de vue,
|
|
|
+ "<filename>news/list.xml.phtml</filename>", qui créera et rendra le
|
|
|
+ <acronym>XML</acronym>.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -121,18 +123,21 @@ class NewsController extends Zend_Controller_Action
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- Via l'URL : <code>/news/list/format/xml</code> (le routeur par défaut utilise
|
|
|
- les paramètres dans ce style : {...}/action/parametre/valeur)
|
|
|
+ Via l'<acronym>URL</acronym> : <filename>/news/list/format/xml</filename>
|
|
|
+ (le routeur par défaut utilise les paires clés et valeurs fournies après l'action)
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
- <para>Via un paramètre GET : <code>/news/list?format=xml</code></para>
|
|
|
+ <para>
|
|
|
+ Via un paramètre <constant>GET</constant> :
|
|
|
+ <command>/news/list?format=xml</command>
|
|
|
+ </para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>
|
|
|
- <code>ContextSwitch</code> vous permet d'écrire des contextes, ceux-ci spécifient le
|
|
|
- suffixe de vue qui change, les en-têtes <acronym>HTTP</acronym> de réponse à modifier, et les fonctions de
|
|
|
+ <emphasis>ContextSwitch</emphasis> vous permet d'écrire des contextes, ceux-ci spécifient le
|
|
|
+ suffixe de vue qui change, les en-têtes de réponse à modifier, et les fonctions de
|
|
|
rappel éventuelles.
|
|
|
</para>
|
|
|
|
|
|
@@ -140,24 +145,26 @@ class NewsController extends Zend_Controller_Action
|
|
|
<title>Contextes inclus par défaut</title>
|
|
|
|
|
|
<para>
|
|
|
- Par défaut, il existe 2 contextes dans l'aide <code>ContextSwitch</code> : json
|
|
|
- et xml.
|
|
|
+ Par défaut, il existe 2 contextes dans l'aide <emphasis>ContextSwitch</emphasis> :
|
|
|
+ json et xml.
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <emphasis>JSON</emphasis>. Le contexte <acronym>JSON</acronym> met le "Content-Type" de la
|
|
|
- réponse à "application/json", et le suffixe de la vue est "json.phtml".
|
|
|
+ <emphasis><acronym>JSON</acronym></emphasis>. Le contexte
|
|
|
+ <acronym>JSON</acronym> met le "Content-Type" de la réponse à
|
|
|
+ "<filename>application/json</filename>", et le suffixe de la vue est
|
|
|
+ "<filename>json.phtml</filename>".
|
|
|
</para>
|
|
|
<para>
|
|
|
- Par défaut cependant, aucun script de vue n'est nécessaire, il va
|
|
|
- simplement sérialiser en <acronym>JSON</acronym> toutes les variables de vues, et les envoyer en
|
|
|
- tant que réponse.
|
|
|
+ Par défaut cependant, aucun script de vue n'est nécessaire, il va simplement
|
|
|
+ sérialiser en <acronym>JSON</acronym> toutes les variables de vues, et les
|
|
|
+ envoyer en tant que réponse.
|
|
|
</para>
|
|
|
<para>
|
|
|
- Ce comportement peut être désactivé en passant le paramètre de
|
|
|
- sérialisation à <constant>FALSE</constant> :
|
|
|
+ Ce comportement peut être désactivé en éteigant le paramètre de
|
|
|
+ sérialisation <acronym>JSON</acronym> :
|
|
|
</para>
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$this->_helper->contextSwitch()->setAutoJsonSerialization(false);
|
|
|
@@ -165,8 +172,9 @@ $this->_helper->contextSwitch()->setAutoJsonSerialization(false);
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <emphasis>XML</emphasis>. Le contexte <acronym>XML</acronym> met le "Content-Type" de la
|
|
|
- réponse à "text/xml", et utilise un suffixe de vue "xml.phtml". Vous devrez
|
|
|
+ <emphasis><acronym>XML</acronym></emphasis>. Le contexte <acronym>XML</acronym>
|
|
|
+ met le "Content-Type" de la réponse à "<filename>text/xml</filename>", et
|
|
|
+ utilise un suffixe de vue "<filename>xml.phtml</filename>". Vous devrez
|
|
|
créer une nouvelle vue pour ce contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
@@ -178,14 +186,16 @@ $this->_helper->contextSwitch()->setAutoJsonSerialization(false);
|
|
|
|
|
|
<para>
|
|
|
Vous pouvez créer vos propres contextes d'action. Par exemple pour retourner du
|
|
|
- YAML, du <acronym>PHP</acronym> sérialisé, ou encore du <acronym>RSS</acronym> ou du ATOM. <code>ContextSwitch</code> est là
|
|
|
- pour cela.
|
|
|
+ <acronym>YAML</acronym>, du <acronym>PHP</acronym> sérialisé, ou encore du
|
|
|
+ <acronym>RSS</acronym> ou du <acronym>ATOM</acronym>. <emphasis>ContextSwitch</emphasis>
|
|
|
+ est là pour cela.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
La manière la plus simple d'ajouter un nouveau contexte d'action est la méthode
|
|
|
- <methodname>addContext()</methodname>. Elle prend 2 paramètres : le nom du contexte, et un tableau
|
|
|
- d'options. Ce tableau d'option doit comporter au moins une des clés suivantes :
|
|
|
+ <methodname>addContext()</methodname>. Elle prend 2 paramètres : le nom du contexte,
|
|
|
+ et un tableau d'options. Ce tableau d'option doit comporter au moins une des clés
|
|
|
+ suivantes :
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
@@ -197,30 +207,31 @@ $this->_helper->contextSwitch()->setAutoJsonSerialization(false);
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <emphasis>headers</emphasis> : un tableau d'en-têtes/valeurs que vous
|
|
|
- voulez ajouter à la réponse.
|
|
|
+ <emphasis>headers</emphasis> : un tableau d'en-têtes et de valeurs que
|
|
|
+ vous voulez ajouter à la réponse.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
<emphasis>callbacks</emphasis> : un tableau dont les clés peuvent être
|
|
|
- "init" ou "post", et les valeurs représentent des noms de fonctions <acronym>PHP</acronym>
|
|
|
- valides, qui seront utilisées pour initialiser ou traiter la fin du
|
|
|
- contexte.
|
|
|
+ "init" ou "post", et les valeurs représentent des noms de fonctions
|
|
|
+ <acronym>PHP</acronym> valides, qui seront utilisées pour initialiser ou
|
|
|
+ traiter la fin du contexte.
|
|
|
</para>
|
|
|
<para>
|
|
|
- Les fonctions d'initialisation interviennent lorsque le contexte est
|
|
|
- détecté par <code>ContextSwitch</code>. Par exemple dans le contexte intégré
|
|
|
- <acronym>JSON</acronym>, la fonction désactive le ViewRenderer lorsque la sérialisation
|
|
|
- automatique est activée.
|
|
|
+ Les fonctions d'initialisation interviennent lorsque le contexte est détecté
|
|
|
+ par <emphasis>ContextSwitch</emphasis>. Par exemple dans le contexte intégré
|
|
|
+ <acronym>JSON</acronym>, la fonction désactive le ViewRenderer lorsque la
|
|
|
+ sérialisation automatique <acronym>JSON</acronym> est activée.
|
|
|
</para>
|
|
|
<para>
|
|
|
- Les fonctions de traitement de fin de contexte (Post processing)
|
|
|
- interviennent durant le processus de <methodname>postDispatch()</methodname> de l'action en
|
|
|
- cours. Par exemple pour le contexte intégré <acronym>JSON</acronym>, la fonction de post process
|
|
|
- regarde si la sérialisation automatique est demandée, si c'est le cas, elle va
|
|
|
- sérialiser les variables de la vue en <acronym>JSON</acronym>, et envoyer la réponse; mais dans le
|
|
|
- cas contraire, elle va réactiver le ViewRenderer.
|
|
|
+ Les fonctions de traitement de fin de contexte (Post processing) interviennent
|
|
|
+ durant le processus de <methodname>postDispatch()</methodname> de l'action en
|
|
|
+ cours. Par exemple pour le contexte intégré <acronym>JSON</acronym>, la
|
|
|
+ fonction de post process regarde si la sérialisation automatique
|
|
|
+ <acronym>JSON</acronym> est active, si c'est le cas, elle va sérialiser les
|
|
|
+ variables de la vue en <acronym>JSON</acronym>, et envoyer la réponse ;
|
|
|
+ mais dans le cas contraire, elle va réactiver le ViewRenderer.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
@@ -230,60 +241,63 @@ $this->_helper->contextSwitch()->setAutoJsonSerialization(false);
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>addContext($context, array $spec)</methodname> : Ajoute un nouveau
|
|
|
- contexte. Si celui-ci existe déjà, une exception sera lancée.
|
|
|
+ <methodname>addContext($context, array $spec)</methodname> : Ajoute un
|
|
|
+ nouveau contexte. Si celui-ci existe déjà, une exception sera lancée.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setContext($context, array $spec)</methodname> : Ajoute un nouveau
|
|
|
- contexte, mais écrase celui-ci s'il existait déjà. Utilise les mêmes
|
|
|
+ <methodname>setContext($context, array $spec)</methodname> : Ajoute un
|
|
|
+ nouveau contexte, mais écrase celui-ci s'il existait déjà. Utilise les mêmes
|
|
|
spécifications que <methodname>addContext()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>addContexts(array $contexts)</methodname> : Ajoute plusieurs contextes
|
|
|
- d'un coup. Le tableau <varname>$contexts</varname> doit être un tableau de paires
|
|
|
- contexte/specifications. Si un des contextes existe déjà, une exception est
|
|
|
- lancée.
|
|
|
+ <methodname>addContexts(array $contexts)</methodname> : Ajoute plusieurs
|
|
|
+ contextes d'un coup. Le tableau <varname>$contexts</varname> doit être un
|
|
|
+ tableau de paires contexte et specifications. Si un des contextes existe déjà,
|
|
|
+ une exception est lancée.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setContexts(array $contexts)</methodname> : Ajoute des nouveaux contextes,
|
|
|
- mais écrase ceux déjà présents éventuellement. Utilise les mêmes spécifications
|
|
|
- que <methodname>addContexts()</methodname>.
|
|
|
+ <methodname>setContexts(array $contexts)</methodname> : Ajoute des
|
|
|
+ nouveaux contextes, mais écrase ceux déjà présents éventuellement. Utilise
|
|
|
+ les mêmes spécifications que <methodname>addContexts()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>hasContext($context)</methodname> : retourne <constant>TRUE</constant> si le
|
|
|
- contexte existe déjà, <constant>FALSE</constant> sinon.
|
|
|
+ <methodname>hasContext($context)</methodname> : retourne
|
|
|
+ <constant>TRUE</constant> si le contexte existe déjà,
|
|
|
+ <constant>FALSE</constant> sinon.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getContext($context)</methodname> : retourne un contexte par son nom. Le
|
|
|
- retour est un tableau qui a la même syntaxe que celui utilisé par
|
|
|
- <methodname>addContext()</methodname>.
|
|
|
+ <methodname>getContext($context)</methodname> : retourne un contexte
|
|
|
+ par son nom. Le retour est un tableau qui a la même syntaxe que celui utilisé
|
|
|
+ par <methodname>addContext()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getContexts()</methodname> : retourne tous les contextes. Le tableau de
|
|
|
- retour est de la forme contexte => spécifications.
|
|
|
+ <methodname>getContexts()</methodname> : retourne tous les contextes.
|
|
|
+ Le tableau de retour est de la forme contexte => spécifications.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>removeContext($context)</methodname> : Supprime un contexte grâce à son
|
|
|
- nom. Retourne <constant>TRUE</constant> si réussi, <constant>FALSE</constant> si le contexte
|
|
|
- n'a pas été trouvé.
|
|
|
+ <methodname>removeContext($context)</methodname> : Supprime un contexte
|
|
|
+ grâce à son nom. Retourne <constant>TRUE</constant> si réussi,
|
|
|
+ <constant>FALSE</constant> si le contexte n'a pas été trouvé.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
- <para><methodname>clearContexts()</methodname> : Supprime tous les contextes.</para>
|
|
|
+ <para>
|
|
|
+ <methodname>clearContexts()</methodname> : Supprime tous les contextes.
|
|
|
+ </para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
</sect4>
|
|
|
@@ -294,13 +308,14 @@ $this->_helper->contextSwitch()->setAutoJsonSerialization(false);
|
|
|
<para>
|
|
|
Il existe deux mécanismes pour créer et affecter des contextes. Vous pouvez créer
|
|
|
des tableaux dans vos contrôleurs, ou utiliser plusieurs méthodes de
|
|
|
- <code>ContextSwitch</code> pour les assembler.
|
|
|
+ <emphasis>ContextSwitch</emphasis> pour les assembler.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
La méthode principale pour ajouter des contextes à des actions est
|
|
|
- <methodname>addActionContext()</methodname>. Elle attend 2 arguments, l'action et le contexte (ou
|
|
|
- un tableau de contextes). Par exemple, considérons la classe suivante :
|
|
|
+ <methodname>addActionContext()</methodname>. Elle attend 2 arguments, l'action et le
|
|
|
+ contexte (ou un tableau de contextes). Par exemple, considérons la classe
|
|
|
+ suivante :
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -325,8 +340,9 @@ class FooController extends Zend_Controller_Action
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Imaginons que nous voulions ajouter un contexte <acronym>XML</acronym> à l'action "list", et deux
|
|
|
- contextes <acronym>XML</acronym> et <acronym>JSON</acronym> à l'action "comments". Nous pourrions faire ceci dans la méthode
|
|
|
+ Imaginons que nous voulions ajouter un contexte <acronym>XML</acronym> à l'action
|
|
|
+ "list", et deux contextes <acronym>XML</acronym> et <acronym>JSON</acronym> à
|
|
|
+ l'action "comments". Nous pourrions faire ceci dans la méthode
|
|
|
<methodname>init()</methodname> :
|
|
|
</para>
|
|
|
|
|
|
@@ -370,9 +386,9 @@ class FooController extends Zend_Controller_Action
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>addActionContext($action, $context)</methodname> : Ajoute un ou plusieurs
|
|
|
- contextes à une action. <varname>$context</varname> doit donc être une chaîne, ou un
|
|
|
- tableau de chaînes.
|
|
|
+ <methodname>addActionContext($action, $context)</methodname> : Ajoute un
|
|
|
+ ou plusieurs contextes à une action. <varname>$context</varname> doit donc être
|
|
|
+ une chaîne, ou un tableau de chaînes.
|
|
|
</para>
|
|
|
<para>
|
|
|
Passer la valeur <constant>TRUE</constant> comme contexte marquera tous les
|
|
|
@@ -385,52 +401,52 @@ class FooController extends Zend_Controller_Action
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setActionContext($action, $context)</methodname> : Marque un ou plusieurs
|
|
|
- contextes comme disponibles pour cette action. Si ceux-ci existent déjà, ils
|
|
|
- seront remplacés. <varname>$context</varname> doit être une chaîne ou un tableau de
|
|
|
- chaînes.
|
|
|
+ <methodname>setActionContext($action, $context)</methodname> : Marque un
|
|
|
+ ou plusieurs contextes comme disponibles pour cette action. Si ceux-ci existent
|
|
|
+ déjà, ils seront remplacés. <varname>$context</varname> doit être une chaîne ou
|
|
|
+ un tableau de chaînes.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>addActionContexts(array $contexts)</methodname> : Ajoute plusieurs paires
|
|
|
- action/context en une fois. <varname>$contexts</varname> doit être un tableau
|
|
|
- associatif action/contexte. Cette méthode proxie vers
|
|
|
+ <methodname>addActionContexts(array $contexts)</methodname> : Ajoute
|
|
|
+ plusieurs paires action et contexte en une fois. <varname>$contexts</varname>
|
|
|
+ doit être un tableau associatif action et contexte. Cette méthode proxie vers
|
|
|
<methodname>addActionContext()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
<methodname>setActionContexts(array $contexts)</methodname> : agit comme
|
|
|
- <methodname>addActionContexts()</methodname>, mais écrase les paires action/contexte
|
|
|
- existantes.
|
|
|
+ <methodname>addActionContexts()</methodname>, mais écrase les paires
|
|
|
+ action et contexte existantes.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>hasActionContext($action, $context)</methodname> : détermine si une action
|
|
|
- possède un contexte donné.
|
|
|
+ <methodname>hasActionContext($action, $context)</methodname> : détermine
|
|
|
+ si une action possède un contexte donné.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getActionContexts($action = null)</methodname> : Retourne tous les
|
|
|
- contextes d'une action donnée, si pas d'action passée, retourne alors toutes
|
|
|
- les paires action/contexte.
|
|
|
+ <methodname>getActionContexts($action = null)</methodname> : Retourne tous
|
|
|
+ les contextes d'une action donnée, si pas d'action passée, retourne alors toutes
|
|
|
+ les paires action et contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>removeActionContext($action, $context)</methodname> : Supprime un ou
|
|
|
- plusieurs contextes pour une action. <varname>$context</varname> doit être une chaîne
|
|
|
- ou un tableau de chaînes.
|
|
|
+ <methodname>removeActionContext($action, $context)</methodname> : Supprime
|
|
|
+ un ou plusieurs contextes pour une action. <varname>$context</varname> doit être
|
|
|
+ une chaîne ou un tableau de chaînes.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>clearActionContexts($action = null)</methodname> : Supprime tous les
|
|
|
- contextes d'une action. Si aucune action n'est spécifiée, supprime alors tous
|
|
|
- les contextes de toutes les actions.
|
|
|
+ <methodname>clearActionContexts($action = null)</methodname> : Supprime
|
|
|
+ tous les contextes d'une action. Si aucune action n'est spécifiée, supprime
|
|
|
+ alors tous les contextes de toutes les actions.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
@@ -455,8 +471,9 @@ class NewsController extends Zend_Controller_Action
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Dans certains cas, vous voudriez forcer un contexte pour une action et
|
|
|
- n'autoriser que celui-ci. Passez le alors à <methodname>initContext()</methodname> :
|
|
|
+ Dans certains cas, vous voudriez forcer un contexte pour une action ; par exemple
|
|
|
+ vous pouvez vouloir seulement le contexte <acronym>XML</acronym> si la permutation de
|
|
|
+ contexte est active. Passez le alors à <methodname>initContext()</methodname> :
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -469,16 +486,17 @@ $contextSwitch->initContext('xml');
|
|
|
|
|
|
<para>
|
|
|
Voici quelques méthodes qui peuvent être utilisées pour changer le comportement
|
|
|
- de l'aide <code>ContextSwitch</code> :
|
|
|
+ de l'aide <emphasis>ContextSwitch</emphasis> :
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setAutoJsonSerialization($flag)</methodname>: Par défaut, le contexte
|
|
|
- <acronym>JSON</acronym> va sérialiser toute variable en notation <acronym>JSON</acronym> et les retourner en tant que
|
|
|
- réponse. Si vous voulez créer votre propre réponse, vous voudriez désactiver
|
|
|
- cet effet. Ceci doit être fait avant l'appel à <methodname>initContext()</methodname>.
|
|
|
+ <methodname>setAutoJsonSerialization($flag)</methodname>: Par défaut, le
|
|
|
+ contexte <acronym>JSON</acronym> va sérialiser toute variable en notation
|
|
|
+ <acronym>JSON</acronym> et les retourner en tant que réponse. Si vous voulez
|
|
|
+ créer votre propre réponse, vous voudriez désactiver cet effet. Ceci doit être
|
|
|
+ fait avant l'appel à <methodname>initContext()</methodname>.
|
|
|
</para>
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$contextSwitch->setAutoJsonSerialization(false);
|
|
|
@@ -491,7 +509,8 @@ $contextSwitch->initContext();
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setSuffix($context, $suffix, $prependViewRendererSuffix)</methodname>:
|
|
|
+ <methodname>setSuffix($context, $suffix,
|
|
|
+ $prependViewRendererSuffix)</methodname> :
|
|
|
Cette méthode permet de personnaliser le suffixe de vue d'un contexte. Le
|
|
|
troisième argument indique si le suffixe actuel du ViewRenderer doit être
|
|
|
utilisé comme préfixe de votre suffixe. Par défaut, c'est le cas.
|
|
|
@@ -503,118 +522,125 @@ $contextSwitch->initContext();
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>addHeader($context, $header, $content)</methodname> : Ajoute un en-tête à
|
|
|
- la réponse pour un contexte donné. <varname>$header</varname> est le nom de l'en-tête
|
|
|
- et <varname>$content</varname> sa valeur.
|
|
|
+ <methodname>addHeader($context, $header, $content)</methodname> : Ajoute
|
|
|
+ un en-tête à la réponse pour un contexte donné. <varname>$header</varname>
|
|
|
+ est le nom de l'en-tête et <varname>$content</varname> sa valeur.
|
|
|
</para>
|
|
|
<para>
|
|
|
- Chaque contexte peut posséder plusieurs en-têtes, <methodname>addHeader()</methodname>
|
|
|
- ajoute des en-têtes dans une pile, pour un contexte donné.
|
|
|
+ Chaque contexte peut posséder plusieurs en-têtes,
|
|
|
+ <methodname>addHeader()</methodname> ajoute des en-têtes dans une pile,
|
|
|
+ pour un contexte donné.
|
|
|
</para>
|
|
|
<para>
|
|
|
- Si l'en-tête spécifié pour le contexte existe déjà, une exception sera
|
|
|
- alors levée.
|
|
|
+ Si l'en-tête <varname>$header</varname> spécifié pour le contexte existe déjà,
|
|
|
+ une exception sera alors levée.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
<methodname>setHeader($context, $header, $content)</methodname> :
|
|
|
- <methodname>setHeader()</methodname> agit comme <methodname>addHeader()</methodname>, sauf qu'il va
|
|
|
- écraser un en-tête qui aurait déjà été présent.
|
|
|
+ <methodname>setHeader()</methodname> agit comme
|
|
|
+ <methodname>addHeader()</methodname>, sauf qu'il va écraser un en-tête
|
|
|
+ qui aurait déjà été présent.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>addHeaders($context, array $headers)</methodname> : Ajoute plusieurs
|
|
|
- en-têtes en une seule fois. Proxie vers
|
|
|
- <methodname>addHeader()</methodname>.<varname>$headers</varname> est un tableau de paires header
|
|
|
- => contexte.
|
|
|
+ <methodname>addHeaders($context, array $headers)</methodname> : Ajoute
|
|
|
+ plusieurs en-têtes en une seule fois. Proxie vers
|
|
|
+ <methodname>addHeader()</methodname>.<varname>$headers</varname> est un
|
|
|
+ tableau de paires header => contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
<methodname>setHeaders($context, array $headers.)</methodname> : comme
|
|
|
<methodname>addHeaders()</methodname>, sauf que cette méthode proxie vers
|
|
|
- <methodname>setHeader()</methodname>, vous permettant d'écraser des en-têtes déjà
|
|
|
- présents.
|
|
|
+ <methodname>setHeader()</methodname>, vous permettant d'écraser des en-têtes
|
|
|
+ déjà présents.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getHeader($context, $header)</methodname> : retourne une valeur d'en-tête
|
|
|
- pour un contexte. Retourne <constant>NULL</constant> si non trouvé.
|
|
|
+ <methodname>getHeader($context, $header)</methodname> : retourne une
|
|
|
+ valeur d'en-tête pour un contexte. Retourne <constant>NULL</constant>
|
|
|
+ si non trouvé.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>removeHeader($context, $header)</methodname> : supprime un en-tête d'un
|
|
|
- contexte.
|
|
|
+ <methodname>removeHeader($context, $header)</methodname> : supprime
|
|
|
+ un en-tête d'un contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>clearHeaders($context, $header)</methodname> : supprime tous les en-têtes
|
|
|
- d'un contexte.
|
|
|
+ <methodname>clearHeaders($context, $header)</methodname> : supprime
|
|
|
+ tous les en-têtes d'un contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setCallback($context, $trigger, $callback)</methodname> : affecte une
|
|
|
- fonction de rappel (callback) pour un contexte. <varname>$trigger</varname> peut être
|
|
|
- soit "init" ou "post" (la fonction de rappel sera appelée soit à
|
|
|
+ <methodname>setCallback($context, $trigger, $callback)</methodname> :
|
|
|
+ affecte une fonction de rappel (callback) pour un contexte. Le déclencheur
|
|
|
+ peut être soit "init" ou "post" (la fonction de rappel sera appelée soit à
|
|
|
l'initialisation du contexte, ou à la fin, en postDispatch).
|
|
|
- <varname>$callback</varname> doit être un nom de fonction <acronym>PHP</acronym> valide.
|
|
|
+ <varname>$callback</varname> doit être un nom de fonction <acronym>PHP</acronym>
|
|
|
+ valide.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setCallbacks($context, array $callbacks)</methodname> : affecte plusieurs
|
|
|
- fonctions de rappel pour un contexte.<varname>$callbacks</varname> doit être un
|
|
|
- tableau de paires trigger/callback. Actuellement, seules deux fonctions maximum
|
|
|
- peuvent être enregistrées car il n'existe que 2 déclencheurs (triggers) :
|
|
|
- "init" et "post".
|
|
|
+ <methodname>setCallbacks($context, array $callbacks)</methodname> :
|
|
|
+ affecte plusieurs fonctions de rappel pour un contexte.
|
|
|
+ <varname>$callbacks</varname> doit être un tableau de paires trigger et
|
|
|
+ callback. Actuellement, seules deux fonctions maximum peuvent être enregistrées
|
|
|
+ car il n'existe que 2 déclencheurs (triggers) : "init" et "post".
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getCallback($context, $trigger)</methodname> : retourne un nom de fonction
|
|
|
- de rappel affectée à un contexte.
|
|
|
+ <methodname>getCallback($context, $trigger)</methodname> : retourne un
|
|
|
+ nom de fonction de rappel affectée à un contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getCallbacks($context)</methodname> : retourne un tableau de paires
|
|
|
- trigger/callback pour un contexte.
|
|
|
+ <methodname>getCallbacks($context)</methodname> : retourne un tableau
|
|
|
+ de paires trigger et callback pour un contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>removeCallback($context, $trigger)</methodname> : supprime une fonction de
|
|
|
- rappel d'un contexte.
|
|
|
+ <methodname>removeCallback($context, $trigger)</methodname> : supprime
|
|
|
+ une fonction de rappel d'un contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>clearCallbacks($context)</methodname> : supprime toutes les fonctions de
|
|
|
- rappel d'un contexte.
|
|
|
+ <methodname>clearCallbacks($context)</methodname> : supprime toutes
|
|
|
+ les fonctions de rappel d'un contexte.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setContextParam($name)</methodname> : affecte le paramètre de requête à
|
|
|
- vérifier pour savoir si un contexte a été appelé. La valeur par défaut est
|
|
|
- "format".
|
|
|
+ <methodname>setContextParam($name)</methodname> : affecte le paramètre
|
|
|
+ de requête à vérifier pour savoir si un contexte a été appelé. La valeur par
|
|
|
+ défaut est "format".
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ <methodname>getContextParam()</methodname> en retourne la valeur actuelle.
|
|
|
</para>
|
|
|
- <para><methodname>getContextParam()</methodname> en retourne la valeur actuelle.</para>
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>setAutoDisableLayout($flag)</methodname> : Par défaut, les layouts sont
|
|
|
- désactivées lorsqu'un contexte intervient, ceci provient du fait que les
|
|
|
- layouts n'ont en théorie pas de signification particulière pour un contexte,
|
|
|
- mais plutôt pour une réponse 'normale'. Cependant si vous désirez utiliser les
|
|
|
- layouts pour des contexte, passez alors la valeur <constant>FALSE</constant> à cette
|
|
|
- méthode. Ceci devant être fait <emphasis>avant</emphasis> l'appel à
|
|
|
+ <methodname>setAutoDisableLayout($flag)</methodname> : Par défaut, les
|
|
|
+ layouts sont désactivées lorsqu'un contexte intervient, ceci provient du fait
|
|
|
+ que les layouts n'ont en théorie pas de signification particulière pour un
|
|
|
+ contexte, mais plutôt pour une réponse 'normale'. Cependant si vous désirez
|
|
|
+ utiliser les layouts pour des contexte, passez alors la valeur
|
|
|
+ <constant>FALSE</constant> à <methodname>setAutoDisableLayout()</methodname>.
|
|
|
+ Ceci devant être fait <emphasis>avant</emphasis> l'appel à
|
|
|
<methodname>initContext()</methodname>.
|
|
|
</para>
|
|
|
<para>
|
|
|
@@ -624,10 +650,10 @@ $contextSwitch->initContext();
|
|
|
</listitem>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- <methodname>getCurrentContext()</methodname> est utilisée pour savoir quel contexte a
|
|
|
- été détecté (si c'est le cas). Cette méthode retourne <constant>NULL</constant> si
|
|
|
- aucune permutation de contexte a été détectée, ou si elle est appelée avant
|
|
|
- <methodname>initContext()</methodname>.
|
|
|
+ <methodname>getCurrentContext()</methodname> est utilisée pour savoir quel
|
|
|
+ contexte a été détecté (si c'est le cas). Cette méthode retourne
|
|
|
+ <constant>NULL</constant> si aucune permutation de contexte a été détectée,
|
|
|
+ ou si elle est appelée avant <methodname>initContext()</methodname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
@@ -637,30 +663,31 @@ $contextSwitch->initContext();
|
|
|
<title>Fonctionnalité AjaxContext</title>
|
|
|
|
|
|
<para>
|
|
|
- L'aide <code>AjaxContext</code> étend l'aide de permutation de contexte
|
|
|
- <code>ContextSwitch</code>, donc toutes ses fonctionnalités s'y retrouvent. Il y a
|
|
|
- cependant quelques différences :
|
|
|
+ L'aide <emphasis>AjaxContext</emphasis> étend l'aide de permutation de contexte
|
|
|
+ <emphasis>ContextSwitch</emphasis>, donc toutes les fonctionnalités de
|
|
|
+ <emphasis>ContextSwitch</emphasis> s'y retrouvent. Il y a cependant quelques
|
|
|
+ différences :
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
Cette aide utilise une propriété de contrôleur d'action différente pour
|
|
|
déterminer les contextes, <varname>$ajaxable</varname>. Vous pouvez avoir différents
|
|
|
- contextes utilisés avec les requêtes <acronym>AJAX</acronym>. Les différentes méthodes
|
|
|
- <code>*ActionContext*()</code> de <code>AjaxContext</code> vont écrire dans cette
|
|
|
- propriété.
|
|
|
+ contextes utilisés avec les requêtes <acronym>AJAX</acronym> ou <acronym>HTTP</acronym>.
|
|
|
+ Les différentes méthodes <methodname>ActionContext()</methodname> de
|
|
|
+ <emphasis>AjaxContext</emphasis> vont écrire dans cette propriété.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
De plus, cette aide ne sera déclenchée que si la requête répond au critère
|
|
|
- <methodname>isXmlHttpRequest()</methodname>. Donc même si le paramètre "format" est passée à la
|
|
|
- requête, il faut nécessairement que celle ci soit une requête XmlHttpRequest, sinon la
|
|
|
- permutation d'<code>AjaxContext</code> n'aura pas lieu.
|
|
|
+ <methodname>isXmlHttpRequest()</methodname>. Donc même si le paramètre "format" est
|
|
|
+ passée à la requête, il faut nécessairement que celle ci soit une requête
|
|
|
+ XmlHttpRequest, sinon la permutation de contexte n'aura pas lieu.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Enfin, <code>AjaxContext</code> ajoute un contexte, HTML. Dans ce contexte, le
|
|
|
- suffixe de vue est "ajax.phtml". Il n'y a pas d'en-tête particulier ajouté à la
|
|
|
- réponse.
|
|
|
+ Enfin, <emphasis>AjaxContext</emphasis> ajoute un contexte, <acronym>HTML</acronym>.
|
|
|
+ Dans ce contexte, le suffixe de vue est "<filename>ajax.phtml</filename>". Il n'y a
|
|
|
+ pas d'en-tête particulier ajouté à la réponse.
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.controller.actionhelpers.contextswitch.ajaxcontext.example">
|
|
|
@@ -668,9 +695,9 @@ $contextSwitch->initContext();
|
|
|
|
|
|
<para>
|
|
|
Dans l'exemple qui suit, nous autorisons les actions "view", "form", et
|
|
|
- "process" à répondre aux requêtes <acronym>AJAX</acronym>. Dans les actions, "view" et "form", nous
|
|
|
- retournerons des portions de HTML; dans "process", nous retournerons du
|
|
|
- <acronym>JSON</acronym>.
|
|
|
+ "process" à répondre aux requêtes <acronym>AJAX</acronym>. Dans les actions,
|
|
|
+ "view" et "form", nous retournerons des portions de <acronym>HTML</acronym> ;
|
|
|
+ dans "process", nous retournerons du <acronym>JSON</acronym>.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -709,14 +736,18 @@ class CommentController extends Zend_Controller_Action
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Coté client, votre bibliothèque <acronym>AJAX</acronym> requêtera simplement "/comment/view",
|
|
|
- "/comment/form", et "/comment/process", en passant le paramètre "format" :
|
|
|
- "/comment/view/format/html", "/comment/form/format/html",
|
|
|
- "/comment/process/format/json". (Ceci fonctionne aussi avec "?format=json".)
|
|
|
+ Coté client, votre bibliothèque <acronym>AJAX</acronym> requêtera simplement
|
|
|
+ "<filename>/comment/view</filename>",
|
|
|
+ "<filename>/comment/form</filename>", et "<filename>/comment/process</filename>",
|
|
|
+ en passant le paramètre "format" :
|
|
|
+ "<filename>/comment/view/format/html</filename>",
|
|
|
+ "<filename>/comment/form/format/html</filename>",
|
|
|
+ "<filename>/comment/process/format/json</filename>".
|
|
|
+ (Ceci fonctionne aussi avec "?format=json".)
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Il est nécessaire que votre bibliothèque envoie l'en-tête <acronym>HTTP</acronym>
|
|
|
+ Il est nécessaire que votre bibliothèque envoie l'en-tête
|
|
|
"X-Requested-With: XmlHttpRequest", ce qui est en général le cas.
|
|
|
</para>
|
|
|
</example>
|