Zend Layout
Od wersji 1.5 Zend framwork wyposarzony jest w zend layout, wzorzec który umożliwia nam proste zarządzanie layoutami.
Do uruchomienia layoutów nie potrzebujemy zbyt wiele kodu, na dobrą sprawę wystarczy nam tylko jedna linijka
1 | $layout = Zend_Layout::startMvc(); |
Layout inicjujemy w “bazowym kontrolerze” po którym dziedziczą wszystkie kontrolery u mnie jest to My_Controller_Action który dziedziczy po Zend_Controller_Action.
Jako że kożystam ze smarty ustawiam sufix dla szablonów i kilka innych opcji
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $options = array( 'layout' => 'main', //nazwa głównego layout'u 'layoutPath' => './frontend/templates/', // ścieżka 'contentKey' => 'content', //klucz do którego zostaną przypisane zrenderowane szablony poszczególnych akcji ); $layout = Zend_Layout::startMvc($options); $layout->setViewSuffix('tpl'); //Przypisujemy $layout do właściwości głównego kontrolera //$this->layout dzięki czemu $layout będzie dostępny //we wszystkich potomnych kontrolerach $this->layout = $layout; //pzrzypisujemy $layout do szablonu $this->view->assign( 'layout', $layout ); |
I właściwie całą pracę związaną z konfiguracją mamy już za sobą, teraz możemy już korzystać z layoutów.
Layouty możemy bardzo łatwo zmieniać w zależności od tego jakiego potrzebujemy dla danej akcji. Możemy to zrobić na dwa sposoby wpisując w akcji:
public function indexAction() { //Wywołujemy layout foobaz.tpl $this->_helper->layout->setLayout('foobaz'); //lub $this->layout->setLayout('foobaz'); }
Wywołanie $this->layout… jest o tyle “lepsze”, że dostajemy jedynie obiekt layoutu zamiast obiektu helper z layoutem.
Zend layout jest o tyle wygodny, że możemy przypisać do niego zmienne tak samo jak przypisujemy zmienne do szablonów akcji poprzez $this->view->zmienna1 = ‘Bla bla bla’;, oczywiście mozemy to też zrobić poprzez obiekt layoutu $this->layout->zmienna2 = ‘La la la’;
Z mojego doświadczenia wynika, że rzadko używam innych layautów niż główny (wcześniej musiałęm sobie symulować coś w rodzaju laya), ale bez tego wzorca ciężko jest się obejść w niektórych sytuacjach, a jak się go już ma trzeba z niego korzystać.
Powiązane wpisy: