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
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24604 -->
<!-- Reviewed: no -->
<sect3 id="zend.view.helpers.initial.headstyle">
<title>L'aide de vue HeadStyle</title>
<para>
L'élément HTML <code><style></code> est utilisé pour inclure des feuilles de
styles <acronym>CSS</acronym> à l'intérieur de l'élément HTML <code><head></code>.
</para>
<note>
<title>Utilisez HeadLink pour lier des fichiers CSS externes</title>
<para>
<link linkend="zend.view.helpers.initial.headlink">HeadLink</link> devrait être
utilisé pour inclure des feuilles de styles externes. <code>HeadStyle</code> ne devrait
être utilisé que si vous souhaitez définir des feuilles de styles internes.
</para>
</note>
<para>
L'aide de vue <code>HeadStyle</code> supporte les méthodes suivantes pour l'ajout et
le paramétrage des déclarations de feuilles de styles :
</para>
<itemizedlist>
<listitem>
<para><methodname>appendStyle($content, $attributes = array())</methodname></para>
</listitem>
<listitem>
<para><methodname>offsetSetStyle($index, $content, $attributes = array())</methodname></para>
</listitem>
<listitem>
<para><methodname>prependStyle($content, $attributes = array())</methodname></para>
</listitem>
<listitem>
<para><methodname>setStyle($content, $attributes = array())</methodname></para>
</listitem>
</itemizedlist>
<para>
Dans tous les cas, <varname>$content</varname> est le contenu des déclarations <acronym>CSS</acronym>.
<varname>$attributes</varname> sont les attributs additionnels que vous pouvez fournir à la balise
<code>style</code> : "lang", "title", "media", ou "dir" sont autorisés.
</para>
<note>
<title>Paramétrez des commentaires conditionnels</title>
<para>
<code>HeadStyle</code> vous permet d'englober vos balises de style avec des
commentaires conditionnels, ce qui permet de les masquer pour des navigateurs
spécifiques. Pour ajouter les balises conditionnelles, fournissez le paramètre
<code>conditional</code> en tant que partie du paramètre <varname>$attrs</varname> lors de
l'appel de la méthode.
</para>
<example id="zend.view.helpers.initial.headstyle.conditional">
<title>HeadStyle avec des commentaires conditionnels</title>
<programlisting language="php"><![CDATA[
// adding scripts
$this->headStyle()->appendStyle($styles, array('conditional' => 'lt IE 7'));
]]></programlisting>
</example>
</note>
<para>
<code>HeadStyle</code> permet aussi la capture des déclarations de style ; ceci peut
être utile si vous voulez créer des déclarations par programme, et ensuite les placer à un
autre endroit. L'utilisation de cette fonctionnalité est montrée dans un exemple
ci-dessous.
</para>
<para>
Enfin, vous pouvez utiliser la méthode <methodname>headStyle()</methodname> pour ajouter
rapidement des éléments de déclarations ; la signature de la méthode est
<methodname>headStyle($content$placement = 'APPEND', $attributes = array())</methodname>.
<varname>$placement</varname> peut être "APPEND", "PREPEND", ou "SET".
</para>
<para>
<code>HeadStyle</code> surcharge chacune des méthodes <methodname>append()</methodname>,
<methodname>offsetSet()</methodname>, <methodname>prepend()</methodname>, et <methodname>set()</methodname> pour imposer
l'utilisation des méthodes spéciales listées ci-dessus. En interne, il stocke chaque élément
sous la forme d'un <code>stdClass</code>, qui est ensuite sérialisé en utilisant la méthode
<methodname>itemToString()</methodname>. Ceci vous permet de réaliser des vérifications sur les éléments
de la pile, et optionnellement modifier ces éléments en modifiant simplement l'objet
retourné.
</para>
<para>
L'aide <code>HeadStyle</code> est une implémentation concrète de l'aide <link
linkend="zend.view.helpers.initial.placeholder">Placeholder</link>.
</para>
<note>
<title>UTF-8 encoding used by default</title>
<para>
By default, Zend Framework uses <acronym>UTF-8</acronym> as its default encoding, and,
specific to this case, <classname>Zend_View</classname> does as well. Character encoding
can be set differently on the view object itself using the
<methodname>setEncoding()</methodname> method (or the the <varname>encoding</varname>
instantiation parameter). However, since <classname>Zend_View_Interface</classname> does
not define accessors for encoding, it's possible that if you are using a custom view
implementation with this view helper, you will not have a
<methodname>getEncoding()</methodname> method, which is what the view helper uses
internally for determining the character set in which to encode.
</para>
<para>
If you do not want to utilize <acronym>UTF-8</acronym> in such a situation, you will
need to implement a <methodname>getEncoding()</methodname> method in your custom view
implementation.
</para>
</note>
<example id="zend.view.helpers.initial.headstyle.basicusage">
<title>Utilisation basique de l'aide HeadStyle</title>
<para>
Vous pouvez spécifier une nouvelle balise de style à n'importe quel moment
:
</para>
<programlisting language="php"><![CDATA[
// ajout de styles
$this->headStyle()->appendStyle($styles);
]]></programlisting>
<para>
L'ordre est très important avec les <acronym>CSS</acronym> ; vous pouvez devoir assurer que les
déclarations soient chargées dans un ordre spécifique dû à l'ordre de la cascade ;
employez les diverses directives "append", "prepend", et "offsetSet" pour faciliter
cette tâche :
</para>
<programlisting language="php"><![CDATA[
// Mettre les styles dans le bon ordre
// - placer à un offset particulier
$this->headStyle()->offsetSetStyle(100, $stylesPerso);
// - placer à la fin
$this->headStyle()->appendStyle($stylesFinaux);
// - placer au début
$this->headStyle()->prependStyle($stylesInitiaux);
]]></programlisting>
<para>
Quand vous êtes finalement prêt à afficher toutes les déclarations de styles dans
votre script de layout, faîtes un simple <code>echo</code> de l'aide :
</para>
<programlisting language="php"><![CDATA[
<?php echo $this->headStyle() ?>
]]></programlisting>
</example>
<example id="zend.view.helpers.initial.headstyle.capture">
<title>Capturer les déclarations de style en utilisant l'aide HeadStyle</title>
<para>
Parfois vous devez produire des déclarations de styles <acronym>CSS</acronym> par programme. Même si
vous pouvez employer la concaténation de chaînes, les "heredocs", ou tout autre
équivalent, il est souvent plus facile de faire juste la création des styles et de les
entourer par des balises <acronym>PHP</acronym>. <code>HeadStyle</code> vous permet de le faire, et capture
ainsi l'élément dans la pile :
</para>
<programlisting language="php"><![CDATA[
<?php $this->headStyle()->captureStart() ?>
body {
background-color: <?php echo $this->bgColor ?>;
}
<?php $this->headStyle()->captureEnd() ?>
]]></programlisting>
<para>Les suppositions suivantes sont considérées :</para>
<itemizedlist>
<listitem>
<para>
Les déclarations de styles sont ajoutées à la pile. Si vous souhaitez
qu'elles remplacent la pile ou qu'elles soient ajoutées en début de pile, vous
devez fournir "SET" ou "PREPEND", en tant que premier argument de
<methodname>captureStart()</methodname>.
</para>
</listitem>
<listitem>
<para>
Si vous souhaitez spécifier un quelconque attribut additionnel pour la
balise <code><style></code>, fournissez-le sous la forme d'un tableau en
deuxième argument de <methodname>captureStart()</methodname>.
</para>
</listitem>
</itemizedlist>
</example>
</sect3>
|