layout-intro.xml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24362 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.layout.intro">
  5. <title>Introdução</title>
  6. <para>
  7. Na construção de um website com camadas <acronym>MVC</acronym> usando Zendo Framework,
  8. os scripts de visualização serão tipicamente apenas um fragmento de <acronym>HTML</acronym>
  9. pertinente à ação solicitada. Por exemplo, se você tivesse a ação
  10. "<filename>/user/list</filename>", você poderia criar um script de vizualização que
  11. percorresse os usuários e apresentasse uma lista desordenada:
  12. </para>
  13. <programlisting language="php"><![CDATA[
  14. <h2>Usuários</h2>
  15. <ul>
  16. <?php if (!count($this->users)): ?>
  17. <li>Nenhum usuário encontrado</li>
  18. <?php else: ?>
  19. <?php foreach ($this->users as $user): ?>
  20. <li>
  21. <?php echo $this->escape($user->fullname) ?>
  22. (<?php echo $this->escape($user->email) ?>)
  23. </li>
  24. <?php endforeach ?>
  25. <?php endif ?>
  26. </ul>
  27. ]]></programlisting>
  28. <para>
  29. Uma vez que este é apenas um fragmento de <acronym>HTML</acronym>, esta página não é válida;
  30. está faltando uma declaração <acronym>DOCTYPE</acronym> e as tags de abertura de
  31. <acronym>HTML</acronym> e <acronym>BODY</acronym>. A questão é: onde elas serão criadas?
  32. </para>
  33. <para>
  34. Nas versões anteriores do Zend Framework, desenvolvedores muitas vezes criaram scripts de
  35. vizualização para "cabeçalho" e "rodapé" que continham esses artefatos, e então seriam
  36. renderizados em cada script de vizualização. Enquanto essa metodologia funcionou, ela também
  37. gerou dificuldades de refatoração mais tarde, ou para criar conteúdos compostos pela chamada
  38. de múltiplas ações.
  39. </para>
  40. <para>
  41. O padrão de projeto <ulink url="http://martinfowler.com/eaaCatalog/twoStepView.html">Two
  42. Step View</ulink> explica muitos dos problemas apresentados. Nesse padrão, a vizualização
  43. "aplicação" é criada primeiro, depois introduzida na visualização "página" e depois é
  44. apresentada ao cliente. A visualização página pode ser pensada como um site-modelo ou
  45. layout, e teria elementos em comum utilizados em várias páginas.
  46. </para>
  47. <para>
  48. Dentro do Zend Framework, o <classname>Zend_Layout</classname> implementa o padrão Two Step
  49. View.
  50. </para>
  51. </sect1>