File: Zend_View-Helpers-Partial.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (220 lines) | stat: -rw-r--r-- 8,379 bytes parent folder | download | duplicates (2)
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<?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>