Zend_Layout Snelle Start Er zijn twee belangrijke gebruiksomgevingen voor Zend_Layout: mét en zonder Zend Framework MVC-componenten Layout scripts In beide gevallen heb je een layout script nodig. Layout scripts gebruiken Zend_View (of elke implementatie daarvan die je gebruikt). Layoutvariabelen worden geregistreerd met een Zend_Layout placeholder. Toegang tot deze variabelen krijg je via de Placeholder Helper of door ze op te vragen als eigenschappen van het layoutobject via de layout helper. Bijvoorbeeld: Mijn website layout()->content; // Vraag de 'foo'-sleutel op met behulp van de placeholder helper: echo $this->placeholder('Zend_Layout')->foo; // Vraag het layout object op en vraag daaruit verschillende sleutels op: $layout = $this->layout(); echo $layout->bar; echo $layout->baz; ?> ]]> Doordat Zend_Layout Zend_View gebruikt om het layout script te renderen kun je alle geregistreerde View Helpers gebruiken en heb je ook toegang tot alle viewvariabelen die reeds zijn ingesteld. Vooral handig zijn de verschillende placeholder helpers, die je in staat stellen om velerlei gegevens voor bijvoorbeeld de <head>-sectie, navigatie, etc. op te vragen:
layout()->content ?>
]]>
Deze functionaliteit is vooral handig als hij wordt gebruikt samen met de ActionStack action helper en plugin. Hiermee kun je een lijst van uit te voeren acties aanleggen, waardoor je allerlei widgets kunt laden binnen één layout.
Zend_Layout als standalone component Zonder de Zend Framework MVC-context is Zend_Layout niet half zo functioneel of handig als mét. Toch heeft het twee belangrijke voordelen: Zend_Layout biedt een aparte omgeving voor layoutvariabelen. Zend_Layout isoleert het layout script (dat meestal op nagenoeg elke pagina hetzelfde zal zijn) van de andere, normale view scripts. Als je Zend_Layout als standalone component gebruikt kun je simpelweg het layout object instantiëren en de verschillende accessoren gebruiken om het object te configureren, variabelen aan het object toe te wijzen en de layout te renderen: setLayoutPath('/path/to/layouts'); // Wijs een paar variabelen toe: $layout->content = $content; $layout->nav = $nav; // Wissel van layout script: $layout->setLayout('foo'); // Render de uiteindelijke layout echo $layout->render(); ?>]]> Voorbeeld Soms zegt een plaatje meer dan duizend woorden. Vandaar de volgende afbeelding. Het laat zien hoe het allemaal bij elkaar kan komen. De daadwerkelijke volgorde van de elementen kan variëren; dat hangt af van de CSS die je gebruikt. Als je bijvoorbeeld elementen absoluut positioneert kan het zijn dat je, hoewel de navigatie later in het document staat, het alsnog bovenaan laat weergeven. Dit kan natuurlijk ook gelden voor de header of zijbalk. De technische kant van het bij elkaar renderen van verschillende stukken inhoud blijft echter hetzelfde.