Zend_View-Helpers.xml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <sect1 id="zend.view.helpers">
  2. <title>Assistentes de Visualização (Modificadores)</title>
  3. <para>
  4. Em seus scripts de visualização, frequentemente é necessário a execução de certas tarefas complexas repetidas vezes; exemplo: formatar uma data, gerar um elemento de formulário, ou exibir links de acionamento. Você pode empregar classes assistentes para executar estas tarefas para você.
  5. </para>
  6. <para>
  7. Para usar um assistente em seu script de visualização, chame-o usando $this->helperName(). Em segundo plano, Zend_View irá carregar a classe Zend_View_Helper_HelperName, instanciá-la e chamar seu método helperName(). O objeto criado é persistente dentro do escopo da instância Zend_View e será reutilizado por todas as chamadas futuras a $this->helperName().
  8. </para>
  9. <sect2 id="zend.view.helpers.initial">
  10. <title>Assistentes Padrão</title>
  11. <para>
  12. Zend_View vem com um conjunto padrão de assistentes, todos dedicados à geração de elementos de formulários. Cada um deles automaticamente escapa a saída apropriada. São eles:
  13. </para>
  14. <itemizedlist>
  15. <listitem><para>
  16. formButton($name, $value, $attribs): Cria um elemento &lt;input type="button" /&gt;.
  17. </para></listitem>
  18. <listitem><para>
  19. formCheckbox($name, $value, $attribs, $options): Cria um elemento &lt;input type="checkbox" /&gt;. O parâmetro $options é um array cujo primeiro valor é o valor "checked" e o segundo é o valor "unchecked" (os valores padrão são '1' e '0'). O controle sera preselecionado de acordo com o conteúdo de $value.
  20. </para></listitem>
  21. <listitem><para>
  22. formFile($name, $value, $attribs): Cria um elemento &lt;input type="file" /&gt;.
  23. </para></listitem>
  24. <listitem><para>
  25. formHidden($name, $value, $attribs): Cria um elemento &lt;input type="hidden" /&gt;.
  26. </para></listitem>
  27. <listitem><para>
  28. formPassword($name, $value, $attribs): Cria um elemento &lt;input type="password" /&gt;.
  29. </para></listitem>
  30. <listitem><para>
  31. formRadio($name, $value, $attribs, $options): Cria uma série de elementos &lt;input type="radio" /&gt;, um para cada elemento em $options. No array $options, a chave e seu valor estão associados ao valor do controle e seu rótulo, respecitvamente. O conteúdo de $value será preselecionado.
  32. </para></listitem>
  33. <listitem><para>
  34. formReset($name, $value, $attribs): Cria um elemento &lt;input type="reset" /&gt;.
  35. </para></listitem>
  36. <listitem><para>
  37. formSelect($name, $value, $attribs, $options): Cria um bloco &lt;select&gt;...&lt;/select&gt;, com um &lt;option&gt;para elemento em $options. No array $options, a chave e seu valor estão associados ao valor do controle e seu rótulo. O conteúdo de $value será preselecionado.
  38. </para></listitem>
  39. <listitem><para>
  40. formSubmit($name, $value, $attribs): Cria um elemento &lt;input type="submit" /&gt;.
  41. </para></listitem>
  42. <listitem><para>
  43. formText($name, $value, $attribs): Cria um elemento &lt;input type="text" /&gt;.
  44. </para></listitem>
  45. <listitem><para>
  46. formTextarea($name, $value, $attribs): Cria um bloco &lt;textarea&gt;...&lt;/textarea&gt;.
  47. </para></listitem>
  48. </itemizedlist>
  49. <para>
  50. Utilizar estes assistentees em seus scripts de visualização é muito fácil, aqui está um exemplo. Note que tudo que você necessita fazer é chamá-los; eles carregam e instanciam a sí próprios a medida que tornam-se necessários.
  51. </para>
  52. <programlisting role="php"><![CDATA[<?php
  53. // dentro do seu script de visualização, $this aponta para a instância de Zend_View.
  54. // digamos que você já atribuiu uma serie de valores ao array
  55. // $countries = array('us' => 'United States', 'il' =>'Israel', 'de' => 'Germany').
  56. ?>
  57. <form action="action.php" method="post">
  58. <p><label>Your Email:
  59. <?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>
  60. </label></p>
  61. <p><label>Your Country:
  62. <?php echo $this->formSelect('country', 'us', null, $this->countries) ?>
  63. </label></p>
  64. <p><label>Would you like to opt in?
  65. <?php echo $this->formCheckbox('opt_in', 'yes', null, array('yes', 'no') ?>
  66. </label></p>
  67. </form>]]>
  68. </programlisting>
  69. <para>
  70. A saída resultante do script de visualização deverá se parecer com isto:
  71. </para>
  72. <programlisting role="php"><![CDATA[<form action="action.php" method="post">
  73. <p><label>Your Email:
  74. <input type="text" name="email" value="you@example.com" size="32" />
  75. </label></p>
  76. <p><label>Your Country:
  77. <select name="country">
  78. <option value="us" selected="selected">United States</option>
  79. <option value="il">Israel</option>
  80. <option value="de">Germany</option>
  81. </select>
  82. </label></p>
  83. <p><label>Would you like to opt in?
  84. <input type="hidden" name="opt_in" value="no" />
  85. <input type="checkbox" name="opt_in" value="yes" checked="checked" />
  86. </label></p>
  87. </form>]]>
  88. </programlisting>
  89. </sect2>
  90. <sect2 id="zend.view.helpers.paths">
  91. <title>Localizando os Assistentes</title>
  92. <para>
  93. Assim como os scripts de visualização, seu controlador pode especificar uma lista de caminhos onde o Zend_View deve procurar pelas classes assistentes. Por padrão, Zend_View procura pelas classes assistentes em "Zend/View/Helper/*". Você pode instruir o Zend_View a procurar em outros locais usando os métodos setHelperPath() e addHelperPath().
  94. </para>
  95. <programlisting role="php"><![CDATA[<?php
  96. $view = new Zend_View();
  97. $view->setHelperPath('/path/to/more/helpers');
  98. ?>]]>
  99. </programlisting>
  100. <para>
  101. De fato, você pode "empilhar" caminhos usando o método addHelperPath(). A medida que você adiciona caminhos à pilha, Zend_View procurará no caminho mais recentemente adicionado. Isto permite a você incrementar o conjunto original de assistentes (ou susbstituir) com os seus próprios personalizados.
  102. </para>
  103. <programlisting role="php"><![CDATA[<?php
  104. $view = new Zend_View();
  105. $view->addHelperPath('/path/to/some/helpers');
  106. $view->addHelperPath('/other/path/to/helpers');
  107. // now when you call $this->helperName(), Zend_View will look first for
  108. // "/other/path/to/helpers/HelperName.php", then for
  109. // "/path/to/some/helpers/HelperName", and finally for
  110. // "Zend/View/Helpers/HelperName.php".
  111. ?>]]>
  112. </programlisting>
  113. </sect2>
  114. <sect2 id="zend.view.helpers.custom">
  115. <title>Escrevendo Assistentes Personalizados</title>
  116. <para>
  117. Escrever assistentes personalizados é fácil; basta seguir estas regras:
  118. </para>
  119. <itemizedlist>
  120. <listitem><para>
  121. O nome da classe deve ser no formato Zend_View_Helper_*, onde * é o nome do assistente a ser criado. Ex:, se você criar um assistente chamado "specialPurpose", o nome da classe deverá ser "Zend_View_Helper_SpecialPurpose" (Observe a capitalização).
  122. </para></listitem>
  123. <listitem><para>
  124. A classe deve ter um método público que coincida com o nome do assistente; este é o método que será chamado quando o seu template chamar "$this->specialPurpose()". Em nosso exemplo "specialPurpose", o método requerido deverá ser declarado como "public function specialPurpose()".
  125. </para></listitem>
  126. <listitem><para>
  127. Em geral, a classe não deve ecoar ou imprimir a saída gerada. Em lugar disso, ela deve retornar os valores a serem impressos. Os valores retornados deverão estar devidamente escapados.
  128. </para></listitem>
  129. <listitem><para>
  130. A classe deve estar no arquivo chamado após o método assistente. Voltando ao exemplo "specialPurpose", o arquivo rebeu o nome "SpecialPurpose.php".
  131. </para></listitem>
  132. </itemizedlist>
  133. <para>
  134. Localize o arquivo com a classe assistente em algum dos caminhos armazenados na pilha, e o Zend_View automaticamente irá carregar, instanciar, persistir, e executar o código para você.
  135. </para>
  136. <para>
  137. Aqui está um exemplo do assistente SpecialPurpose:
  138. </para>
  139. <programlisting role="php"><![CDATA[<?php
  140. class Zend_View_Helper_SpecialPurpose {
  141. protected $_count = 0;
  142. public function specialPurpose()
  143. {
  144. $this->_count++;
  145. $output = "I have seen 'The Jerk' {$this->_count} time(s).";
  146. return htmlspecialchars($output);
  147. }
  148. }
  149. ?>]]>
  150. </programlisting>
  151. <para>
  152. Em um script de visualização, você pode chamar o assistente SpecialPurpose helper quantas vezes desejar; ele será instanciado apenas uma vez; e persistirá durante todo o tempo de vida da instãncia de Zend_View.
  153. </para>
  154. <programlisting role="php"><![CDATA[<?php
  155. // remember, in a view script, $this refers to the Zend_View instance.
  156. echo $this->specialPurpose();
  157. echo $this->specialPurpose();
  158. echo $this->specialPurpose();
  159. ?>]]>
  160. </programlisting>
  161. <para>
  162. A saída deverá se parecer com isto:
  163. </para>
  164. <programlisting role="php"><![CDATA[I have seen 'The Jerk' 1 time(s).
  165. I have seen 'The Jerk' 2 time(s).
  166. I have seen 'The Jerk' 3 time(s).]]>
  167. </programlisting>
  168. </sect2>
  169. </sect1>
  170. <!--
  171. vim:se ts=4 sw=4 et:
  172. -->