Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zend dwa layouty default,admin.
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Witam,
mam aplikację, która skłąda się z dwóch modułów.
Obecnie aby zrobić inny layout dla admina korzystam z pluginu:
  1. <?php
  2. class Admin_Plugin_Layout extends Zend_Controller_Plugin_Abstract
  3. {
  4. public function preDispatch(Zend_Controller_Request_Abstract $request)
  5. {
  6.  
  7. $module = $request->getModuleName();
  8. $layout = Zend_Layout::getMvcInstance();
  9.  
  10. // check module and automatically set layout
  11. $layoutsDir = $layout->getLayoutPath();
  12. // check if module layout exists else use default
  13. if(file_exists($layoutsDir . DIRECTORY_SEPARATOR . $module . ".phtml")) {
  14. $layout->setLayout($module);
  15. } else {
  16. $layout->setLayout("layout");
  17. }
  18. }
  19. }


Moje pytanie, dlaczego nie mogę w bootstrapie modułu admin, zmienić layout przypomocy takiego kodu:
  1. protected function _initAdminLayout()
  2. {
  3. $layout = Zend_Layout::getMvcInstance();
  4. $layout->setLayout("layout");
  5. }
CuteOne
Na wstępie powiem, że odpowiedzi na Twoje pytanie nie znam sad.gif sam kiedyś szukałem rozwiązania tego problemu i jedyne co znalazłem to przypisanie danemu modułowi layout już na poziomie pliku konfiguracyjnego. Innymi słowy każdy moduł musiał posiadać swój własny application.ini sleep.gif

Jeżeli znajdziesz/wynajdziesz coś lepszego proszę daj znać! Na pewno przyda mi się to w przyszłości

Pozdrawiam
nid3
Cytat
Innymi słowy każdy moduł musiał posiadać swój własny application.ini

Nie zgadzam się. Nie musi.


Do problemu:

  1. public function init() {
  2. parent::init();
  3.  
  4. $this->_helper->layout->setLayout('admin');
  5. //$this->_helper->layout->setLayout('inny_plik_layouta');
  6.  
  7.  
  8. }

Nie wiem czemu tworzysz z tego plugin.

wystarczy w aplication.ini utworzyć
  1. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
  2. default.resources.layout.layout = "default"
  3. admin.resources.layout.layout = "admin"

i dodawać layouty do modułów jak sobie chcesz lub tylko w init albo w akcji wywoływać helpera do layouta.

Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.