layout-intro.xml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.layout.intro">
  5. <title>Einführung</title>
  6. <para>
  7. Wenn eine Website gebaut wird, die Zend Frameworks <acronym>MVC</acronym> Layer verwendet,
  8. sind die View Skripte typischerweise nur Abschnitte von <acronym>HTML</acronym> welche der
  9. angefragten Aktion angehören. Wenn man zum Beispiel die Aktion
  10. "<filename>/user/list</filename>" hat, könnte man ein View Skript erstellen welches durch
  11. die Benutzer iteriert und eine unsortierte Liste präsentiert:
  12. </para>
  13. <programlisting language="php"><![CDATA[
  14. <h2>Benutzer</h2>
  15. <ul>
  16. <?php if (!count($this->users)): ?>
  17. <li>Keine Benutzer gefunden</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. Da dies nur ein <acronym>HTML</acronym> Abschnitt ist, ist dies keine gültige Seite; es
  30. fehlt eine <acronym>DOCTYPE</acronym> Deklaration, und die öffnenden <acronym>HTML</acronym>
  31. und <acronym>BODY</acronym> Tags. Die Frage ist also, wie wir diese erstellen?
  32. </para>
  33. <para>
  34. In frühen Versionen von Zend Framework erstellten Entwickler oft "header" und "footer" View
  35. Skripte welche diese Teile enthielten, und Sie dann in jedem View Skript darstellten. Wärend
  36. diese Methode funktioniert ist es auch schwer Sie im Nachhinein zu verändern, oder
  37. kombinierte Inhalte zu erstellen indem mehrere Aktionen aufgerufen werden.
  38. </para>
  39. <para>
  40. Das <ulink url="http://martinfowler.com/eaaCatalog/twoStepView.html">Two Step View</ulink>
  41. Design Pattern beantwortet viele der gezeigten Probleme. In diesem Pattern wird die
  42. "application" (Anwendungs) View als erstes erstellt, und dann in die "page" (Seite) Views
  43. injiziert, welche anschließend dem Kunden presentiert wird. Die Seitenansicht kann wie ein
  44. seitenweites Template oder Layout angesehen werden, und würde übliche Elemente zwischen den
  45. verschiedenen Seiten verwenden.
  46. </para>
  47. <para>
  48. Im Zend Framework implementiert <classname>Zend_Layout</classname> das Two Step View
  49. Pattern.
  50. </para>
  51. </sect1>