<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="learning.layout.intro">
    <title>Einführung</title>

    <para>
        Wenn eine Website gebaut wird, die Zend Frameworks <acronym>MVC</acronym> Layer verwendet,
        sind die View Skripte typischerweise nur Abschnitte von <acronym>HTML</acronym> welche der
        angefragten Aktion angehören. Wenn man zum Beispiel die Aktion
        "<filename>/user/list</filename>" hat, könnte man ein View Skript erstellen welches durch
        die Benutzer iteriert und eine unsortierte Liste präsentiert:
    </para>

    <programlisting language="php"><![CDATA[
<h2>Benutzer</h2>
<ul>
    <?php if (!count($this->users)): ?>
    <li>Keine Benutzer gefunden</li>
    <?php else: ?>
    <?php foreach ($this->users as $user): ?>
    <li>
        <?php echo $this->escape($user->fullname) ?>
        (<?php echo $this->escape($user->email) ?>)
    </li>
    <?php endforeach ?>
    <?php endif ?>
</ul>
]]></programlisting>

    <para>
        Da dies nur ein <acronym>HTML</acronym> Abschnitt ist, ist dies keine gültige Seite; es
        fehlt eine <acronym>DOCTYPE</acronym> Deklaration, und die öffnenden <acronym>HTML</acronym>
        und <acronym>BODY</acronym> Tags. Die Frage ist also, wie wir diese erstellen?
    </para>

    <para>
        In frühen Versionen von Zend Framework erstellten Entwickler oft "header" und "footer" View
        Skripte welche diese Teile enthielten, und Sie dann in jedem View Skript darstellten. Wärend
        diese Methode funktioniert ist es auch schwer Sie im Nachhinein zu verändern, oder
        kombinierte Inhalte zu erstellen indem mehrere Aktionen aufgerufen werden.
    </para>

    <para>
        Das <ulink url="http://martinfowler.com/eaaCatalog/twoStepView.html">Two Step View</ulink>
        Design Pattern beantwortet viele der gezeigten Probleme. In diesem Pattern wird die
        "application" (Anwendungs) View als erstes erstellt, und dann in die "page" (Seite) Views
        injiziert, welche anschließend dem Kunden presentiert wird. Die Seitenansicht kann wie ein
        seitenweites Template oder Layout angesehen werden, und würde übliche Elemente zwischen den
        verschiedenen Seiten verwenden.
    </para>

    <para>
        Im Zend Framework implementiert <classname>Zend_Layout</classname> das Two Step View
        Pattern.
    </para>
</sect1>
