Zend_Layout Schnellstart
Es gibt zwei primäre Verwendungen für Zend_Layout: Mit dem Zend Framework MVC, und ohne.
Layout Skripte
In beiden Fällen, müssen trotzdem Layout Skripte erstellt werden. Layout Sktipte verwenden einfach
Zend_View (oder welche View Implementation auch immer verwendet wird). Layout Variablen werden
mit einem Zend_Layout
Platzhalter registriert, und es kann
auf Sie über den Platzhalter Helfer zugegriffen werden oder dadurch das Sie als Objekt Eigenschaften
vom Layout Objekt über den Layout Helfer geholt werden.
Als Beispiel:
Meine Seite
layout()->content;
// Holt den 'foo' Schlüssel durch Verwendung des Platzhalter Helfers:
echo $this->placeholder('Zend_Layout')->foo;
// Holt das Layout Objekt und empfängt verschiedene Schlüssel von Ihm:
$layout = $this->layout();
echo $layout->bar;
echo $layout->baz;
?>
]]>
Weil Zend_LayoutZend_View für die Darstellung verwendet, kann auch jeder
registrierte View Helfer verwendet werden, und auch auf jede zuvor zugeordnete View Variable kann
zugegriffen werden. Sehr hilfreich sind die verschiedenen
Platzhalter Helfer, da diese das
Empfangen von Inhalt für einen Bereich wie die <head> Sektion, Navigation usw. erlauben:
headTitle() ?>
headScript() ?>
headStyle() ?>
render('header.phtml') ?>
placeholder('nav') ?>
layout()->content ?>
render('footer.phtml') ?>
]]>Zend_Layout mit dem Zend Framework MVC verwendenZend_Controller bietet ein reiches Set von Funktionalitäten für Erweiterung mit seinen
Front Kontroller Plugins und
Action Kontroller Helfern.
Zend_View hat auch Helfer.
Zend_Layout nimmt Vorteile wahr von diesen verschiedenen Erweiterungspunkten wenn es
mit den MVC Komponenten verwendet wird.
Zend_Layout::startMvc() erstellt eine Instanz von Zend_Layout mit jeder
optionalen Konfiguration die angegeben wird. Anschließend wird ein Front Kontroller Plugin
registriert das das Layout mit jedem Anwendungsinhalt darstellt sobald die Dispatch Schleife
fertiggestellt ist, und registriert einen Action Helfer der den Zugriff auf das Layout Objekt
vom Action Kontroller aus gestattet. Zusätzlich kann jederzeit die Layout Instanz vom View
Skript geholt werden indem der layout View Helfer verwendet wird.
Zuerst sehen wir uns an wie Zend_Layout initialisiert wird um es mit dem MVC zu verwenden:
startMvc() kann ein optionales Array von Optionen oder ein Zend_Config
Objekt entgegennehmen um die Instanz anzupassen; diese Optionen werden detailiert in
beschrieben.
In einem Action Controller, kann anschließend auf die Layout Instanz als Action Helfer zugegriffen
werden:
_helper->layout->disableLayout();
}
public function bazAction()
{
// Ein anderes Layout Skript in dieser Action verwenden:
$this->_helper->layout->setLayout('foobaz');
};
}
]]>
Im View Skript kann dann auf das Layout Objekt über den layout View Helfer zugegriffen
werden. Dieser View Helfer ist etwas anders als andere da er keine Argumente entgegennimmt und ein
Objekt statt einem Stringwert zurückgibt. Das erlaubt sofortige Methodenaufrufe auf dem Layout
Objekt:
layout()->setLayout('foo'); // alternatives Layout setzen
]]>
Die im MVC registrierte Zend_Layout Instanz kann jederzeit über die statische
getMvcInstance() Methode geholt werden:
Letztendlich hat das Front Controller Plugin von Zend_Layout ein wichtiges Feature
zusätzlich zur Darstellung des Layouts: Es empfängt alle benannte Segmente vom Antwortobjekt und
ordnet diese als Layout Variablen zu, wobei das 'default' Segment der 'content' Variable zugeordnet
wird. Das erlaubt es auf den Anwendungsinhalt zugreifen zu können und es in View Skripten
darzustellen.
Als Beispiel, nehmen wir an das der Code zuerst FooController::indexAction()
auslöst, welches einige Inhalte im standardmäßigen Antwortobjekt darstellt, und dann zu
NavController::menuAction() weiterleitet, welches Inhalt im 'nav' Antwortobjekt
darstellt. Letztendlich wird auf CommentController::fetchAction() weitergeleitet und
einige Kommentare geholt, aber diese werden auch im standard Antwortobjekt dargestellt. (was
Inhalt zu diesem Segment anfügt). Das View Skript kann dann jedes separat darstellen: