| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect3 id="zend.view.helpers.initial.partial">
- <title>L'aide de vue Partial</title>
- <para>
- L'aide de vue <code>Partial</code> est utilisée pour effectuer le rendu d'un modèle
- ("template") spécifique dans sa propre portée de variable. L'utilisation principale est pour
- les fragments réutilisables de modèle avec lesquels vous n'avez pas besoin de vous inquiéter
- des conflits de noms de variable. De plus, ils vous permettent de spécifier les scripts de
- vue partiels dans des modules spécifiques.
- </para>
- <para>
- Une soeur de l'aide <code>Partial</code>, l'aide de vue de <code>PartialLoop</code>
- vous permet de passer des données itératives, et effectue un rendu partiel pour chaque
- élément.
- </para>
- <note>
- <title>Compteur de PartialLoop</title>
- <para>
- L'aide de vue <code>PartialLoop</code> assigne une variable à la vue nommée
- <code>partialCounter</code> qui fournit la position courante du tableau au script de
- vue. Ce qui permet simplement d'avoir des couleurs alternatives dans les lignes d'un
- tableau par exemple.
- </para>
- </note>
- <example id="zend.view.helpers.initial.partial.usage">
- <title>Utilisation de base des Partials</title>
- <para>
- L'utilisation de base des <code>Partials</code> est d'effectuer le rendu d'un
- fragment de modèle dans sa propre portée de vue. Examinez le script partiel suivant
- :
- </para>
- <programlisting language="php"><![CDATA[
- <!--partiel.phtml-->
- <ul>
- <li>De : <?php echo $this->escape($this->de) ?></li>
- <li>Sujet : <?php echo $this->escape($this->sujet) ?></li>
- </ul>
- ]]></programlisting>
- <para>
- Vous l'appelleriez alors dans votre script de vue en utilisant ce qui suit
- :
- </para>
- <programlisting language="php"><![CDATA[
- <?php echo $this->partial('partiel.phtml', array(
- 'de' => 'Equipe Framework',
- 'sujet' => 'vues partielles')); ?>
- ]]></programlisting>
- <para>Qui vous retournerait :</para>
- <programlisting language="html"><![CDATA[
- <ul>
- <li>De : Equipe Framework</li>
- <li>Sujet : vues partielles</li>
- </ul>
- ]]></programlisting>
- </example>
- <note>
- <title>Qu'est qu'un modèle ?</title>
- <para>
- Un modèle utilisé avec l'aide de vue <code>Partial</code> peut être un des
- suivants :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Tableaux ("array")</emphasis> : si un tableau est fourni, il
- devrait être associatif, car ses paires de clé/valeur sont assignées à la vue
- avec les clés comme variables de vue.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Objet implémentant la méthode toArray()</emphasis> : si un objet
- est fourni et qu'il possède une méthode <methodname>toArray()</methodname>, le résultat de
- <methodname>toArray()</methodname> sera assigné à la vue comme variable de vue.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Objet standard</emphasis> : tout autre objet assignera le
- résultat de <methodname>object_get_vars()</methodname> (essentiellement toutes les
- propriétés publiques de l'objet) à l'objet de vue.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Si votre modèle est un objet, vous pouvez vouloir le fournir en tant qu'objet au
- script partiel, plutôt que de le sérialiser en un tableau de variables. Vous pouvez
- faire ceci en paramétrant la propriété "objectKey" de l'aide de vue approprié :
- </para>
- <programlisting language="php"><![CDATA[
- // Tell partial to pass objects as 'model' variable
- $view->partial()->setObjectKey('model');
- // Tell partial to pass objects from partialLoop as 'model' variable in final
- // partial view script:
- $view->partialLoop()->setObjectKey('model');
- ]]></programlisting>
- <para>
- Cette technique est particulièrement utile quand vous fournissez un
- <classname>Zend_Db_Table_Rowset</classname>s à <methodname>partialLoop()</methodname>, ainsi vous
- avez un accès complet à vos objets <code>Row</code> à l'intérieur de vos scripts de vue,
- permettant d'appeler des méthodes sur ceux-ci (comme récupérer des valeurs d'un
- <code>Row</code> parent ou dépendant).
- </para>
- </note>
- <example id="zend.view.helpers.initial.partial.partialloop">
- <title>Utiliser PartialLoop pour effectuer le rendu d'éléments itératifs</title>
- <para>
- Typiquement, vous voudrez employer des <code>Partials</code> dans une boucle, pour
- rendre le même fragment de contenu plusieurs fois ; de cette façon vous pouvez mettre de
- grands blocs de contenu répété ou de logique complexe d'affichage dans un endroit
- unique. Toutefois ceci a un impact d'exécution, car l'aide Partial doit être appelée une
- fois par itération.
- </para>
- <para>
- L'aide de vue <code>PartialLoop</code> résout ce problème. Elle vous permet de
- fournir un élément itérable (tableau ou objet implémentant <code>Iterator</code>) comme
- modèle. Elle réitère alors au-dessus de celui-ci en fournissant les éléments au script
- partiel. Les éléments dans l'itérateur peuvent être n'importe quel modèle que l'aide de
- vue <code>Partial</code> permet (cf. ci-dessus).
- </para>
- <para>Considérons le script partiel suivant :</para>
- <programlisting language="php"><![CDATA[
- <!--partialLoop.phtml-->
- <dt><?php echo $this->key ?></dt>
- <dd><?php echo $this->value ?></dd>
- ]]></programlisting>
- <para>Et le "modèle" suivant :</para>
- <programlisting language="php"><![CDATA[
- $model = array(
- array('key' => 'Mammifère', 'value' => 'Chameau'),
- array('key' => 'Oiseau', 'value' => 'Pingouin'),
- array('key' => 'Reptile', 'value' => 'Asp'),
- array('key' => 'Poisson', 'value' => 'Flounder')
- );
- ]]></programlisting>
- <para>
- Dans votre script de vue, vous pouvez maintenant appeler l'aide
- <code>PartialLoop</code> :
- </para>
- <programlisting language="php"><![CDATA[
- <dl>
- <?php echo $this->partialLoop('partialLoop.phtml', $model) ?>
- </dl>
- ]]></programlisting>
- <programlisting language="html"><![CDATA[
- <dl>
- <dt>Mammifère</dt>
- <dd>Chameau</dd>
- <dt>Oiseau</dt>
- <dd>Pingouin</dd>
- <dt>Reptile</dt>
- <dd>Asp</dd>
- <dt>Poisson</dt>
- <dd>Flounder</dd>
- </dl>
- ]]></programlisting>
- </example>
- <example id="zend.view.helpers.initial.partial.modules">
- <title>Effectuer le rendu partiel dans des modules différents</title>
- <para>
- Parfois un partiel existera dans un module différent. Si vous connaissez le nom du
- module, vous pouvez le fournir comme deuxième argument à <methodname>partial()</methodname> ou à
- <methodname>partialLoop()</methodname>, en déplaçant l'argument <varname>$model</varname> à la troisième
- position.
- </para>
- <para>
- Par exemple, s'il y a un gestionnaire de page partiel que vous souhaitez utiliser
- et qui est dans le module "liste", vous pourriez le saisir comme suit :
- </para>
- <programlisting language="php"><![CDATA[
- <?php echo $this->partial('pager.phtml', 'liste', $pagerData) ?>
- ]]></programlisting>
- <para>
- De cette façon, vous pouvez réutiliser des partiels créés spécifiquement pour
- d'autre modules. Ceci dit, il est probablement une meilleure pratique de mettre des
- partiels réutilisables dans des dossiers partagés de script de vue.
- </para>
- </example>
- </sect3>
|