Zend_View-Helpers-HeadStyle.xml 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.headstyle">
  5. <title>Assistente HeadStyle</title>
  6. <para>
  7. O elemento <acronym>HTML</acronym> <emphasis>&lt;style&gt;</emphasis> é usado para incluir
  8. folhas de estilo <acronym>CSS</acronym> de forma inline no elemento <acronym>HTML</acronym>
  9. <emphasis>&lt;head&gt;</emphasis>.
  10. </para>
  11. <note>
  12. <title>Use o HeadLink para "linkar" arquivos CSS</title>
  13. <para>
  14. O <link linkend="zend.view.helpers.initial.headlink">HeadLink</link> deve ser usado para
  15. criar elementos <emphasis>&lt;link&gt;</emphasis> para a inclusão de folhas de estilo
  16. externas. <classname>HeadStyle</classname> é usado quando você deseja definir folhas de
  17. estilo inline.
  18. </para>
  19. </note>
  20. <para>
  21. O assistente <classname>HeadStyle</classname> dá suporte aos seguintes métodos para a
  22. configuração e adição de declarações de folhas de estilo:
  23. </para>
  24. <itemizedlist>
  25. <listitem>
  26. <para>
  27. <command>appendStyle($content, $attributes = array())</command>
  28. </para>
  29. </listitem>
  30. <listitem>
  31. <para>
  32. <command>offsetSetStyle($index, $content, $attributes = array())</command>
  33. </para>
  34. </listitem>
  35. <listitem>
  36. <para>
  37. <command>prependStyle($content, $attributes = array())</command>
  38. </para>
  39. </listitem>
  40. <listitem>
  41. <para>
  42. <command>setStyle($content, $attributes = array())</command>
  43. </para>
  44. </listitem>
  45. </itemizedlist>
  46. <para>
  47. Em todos os casos, <varname>$content</varname> é a verdadeira declaração
  48. <acronym>CSS</acronym>. <varname>$attributes</varname> são quaisquer atributos adicionais
  49. que você dejesa prover para a tag <property>style</property>: lang, title, media, ou dir são
  50. todos admissíveis.
  51. </para>
  52. <note>
  53. <title>Configurando Comentários Condicionais</title>
  54. <para>
  55. <classname>HeadStyle</classname> permite que você envolva a tag style em comentários
  56. condicionais, que permitem que você as esconda de navegadores específicos. Para
  57. adicionar as tags condicionais, passe o valor condicional como parte do parâmetro
  58. <varname>$attributes</varname> nas chamadas do método.
  59. </para>
  60. <example id="zend.view.helpers.initial.headstyle.conditional">
  61. <title>Headstyle com Comentários Condicionais</title>
  62. <programlisting language="php"><![CDATA[
  63. // adicionando scripts
  64. $this->headStyle()->appendStyle($styles, array('conditional' => 'lt IE 7'));
  65. ]]></programlisting>
  66. </example>
  67. </note>
  68. <para>
  69. <classname>HeadStyle</classname> também permite a captura de declarações de estilo; isso
  70. pode ser útil se você quiser criar as declarações através de programação, e então colocá-las
  71. em outro lugar. A utilização disso será mostrada em um exemplo abaixo.
  72. </para>
  73. <para>
  74. Finalmente, você pode usar o método <methodname>headStyle()</methodname> para acrescentar
  75. rapidamente elementos de declaração; a assinatura para isso é
  76. <methodname>headStyle($content$placement = 'APPEND', $attributes = array())</methodname>.
  77. <varname>$placement</varname> deve ser 'APPEND', 'PREPEND', ou 'SET'.
  78. </para>
  79. <para>
  80. <classname>HeadStyle</classname> sobrescreve <methodname>append()</methodname>,
  81. <methodname>offsetSet()</methodname>, <methodname>prepend()</methodname>, e
  82. <methodname>set()</methodname> para forçar o uso dos métodos especiais listados acima.
  83. Internamente ele armazena cada item como um token <property>stdClass</property>, que depois
  84. é serializado usando o método <methodname>itemToString()</methodname>. Isso permite que você
  85. faça verificações nos itens da pilha, e opcionalmente modifique estes itens simplesmente
  86. modificando o objeto retornado.
  87. </para>
  88. <para>
  89. O assistente <classname>HeadStyle</classname> é uma implementação concreta do <link
  90. linkend="zend.view.helpers.initial.placeholder">assistente Placeholder</link>.
  91. </para>
  92. <note>
  93. <title>Codificação UTF-8 usada por padrão</title>
  94. <para>
  95. Por padrão, o Zend Framework usa <acronym>UTF-8</acronym> como sua codificação padrão,
  96. e, especificamente neste caso, o <classname>Zend_View</classname> faz isto muito bem. A
  97. codificação de caracteres pode ser definida de forma diferente no objeto de visualização
  98. em si usando o método <methodname>setEncoding()</methodname> (ou a instanciação do
  99. parâmetro <varname>encoding</varname>). No entanto, como
  100. <classname>Zend_View_Interface</classname> não define acessadores para codificação, é
  101. possível que se você estiver usando uma implementação de visualização personalizada com
  102. este assistente de visualização, você não terá um método
  103. <methodname>getEncoding()</methodname>, que é o que o assistente de visualização usa
  104. internamente para determinar o conjunto de caracteres na qual irá codificar.
  105. </para>
  106. <para>
  107. Se você não quiser utilizar <acronym>UTF-8</acronym> nessa situação, será necessário
  108. implementar um método <methodname>getEncoding()</methodname> em sua implementação de
  109. visualização personalizada.
  110. </para>
  111. </note>
  112. <example id="zend.view.helpers.initial.headstyle.basicusage">
  113. <title>Uso Básico do Assistente HeadStyle</title>
  114. <para>
  115. Você pode especificar uma nova tag de estilo a qualquer momento:
  116. </para>
  117. <programlisting language="php"><![CDATA[
  118. // adding styles
  119. $this->headStyle()->appendStyle($styles);
  120. ]]></programlisting>
  121. <para>
  122. A ordenação é muito importante no <acronym>CSS</acronym>; você talvez tenha que
  123. assegurar que as declarações sejam carregadas em uma ordem específica devido à ordem da
  124. cascata; use as diretivas append, prepend, e offsetSet para lhe auxiliar nessa tarefa:
  125. </para>
  126. <programlisting language="php"><![CDATA[
  127. // Putting styles in order
  128. // place at a particular offset:
  129. $this->headStyle()->offsetSetStyle(100, $customStyles);
  130. // place at end:
  131. $this->headStyle()->appendStyle($finalStyles);
  132. // place at beginning
  133. $this->headStyle()->prependStyle($firstStyles);
  134. ]]></programlisting>
  135. <para>
  136. Quando você estiver finalmente pronto para liberar todas as declarações de estilo em seu
  137. script layout, simplesmente imprima o assistente:
  138. </para>
  139. <programlisting language="php"><![CDATA[
  140. <?php echo $this->headStyle() ?>
  141. ]]></programlisting>
  142. </example>
  143. <example id="zend.view.helpers.initial.headstyle.capture">
  144. <title>Capturando Declarações de Estilo Usando o Assistente HeadStyle</title>
  145. <para>
  146. Às vezes você precisa gerar declarações de estilo <acronym>CSS</acronym> de forma
  147. programática. Embora você possa usar concatenação de strings, heredocs, e assim por
  148. diante, muitas vezes é mais fácil apenas para fazer isso criando estilos e
  149. distribuindo-os em tags <acronym>PHP</acronym>. <classname>HeadStyle</classname> permite
  150. que você faça exatamente isso, capturando-os para a pilha:
  151. </para>
  152. <programlisting language="php"><![CDATA[
  153. <?php $this->headStyle()->captureStart() ?>
  154. body {
  155. background-color: <?php echo $this->bgColor ?>;
  156. }
  157. <?php $this->headStyle()->captureEnd() ?>
  158. ]]></programlisting>
  159. <para>
  160. As seguintes suposições são feitas:
  161. </para>
  162. <itemizedlist>
  163. <listitem>
  164. <para>
  165. As declarações de estilo serão anexados à pilha. Se você deseja que elas
  166. substituam a pilha ou que sejam adicionadas ao topo, você vai precisar passar
  167. 'SET' ou 'PREPEND', respectivamente, como o primeiro argumento para
  168. <methodname>captureStart()</methodname>.
  169. </para>
  170. </listitem>
  171. <listitem>
  172. <para>
  173. Se você deseja especificar todos os atributos adicionais para a tag
  174. <emphasis>&lt;style&gt;</emphasis>, passe-os em uma matriz como o segundo
  175. argumento para <methodname>captureStart()</methodname>.
  176. </para>
  177. </listitem>
  178. </itemizedlist>
  179. </example>
  180. </sect3>
  181. <!--
  182. vim:se ts=4 sw=4 et:
  183. -->