Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Menedzer pluginow frontControllera
Forum PHP.pl > Forum > PHP > Frameworki
Skyline
Witam

Probuje rozwiazac nastepujacy problem. W bootstrap.php mam:

  1. <?php
  2. $frontController = Zend_Controller_Front::getInstance();
  3. $frontController->setControllerDirectory(array(
  4. 'default' => ROOT_DIR . '/application/controllers',
  5. 'admin'  => ROOT_DIR . '/application/admin/controllers'
  6. ));
  7.  
  8. $frontController->registerPlugin(new ZFTest_Controller_Plugin_ActionSetup());
  9. $frontController->registerPlugin(new ZFTest_Controller_Plugin_ViewSetup(), 98);
  10.  
  11. Zend_Layout::startMvc(array(
  12. 'layoutPath' => ROOT_DIR . '/application/views/layouts',
  13. 'pluginClass' => 'ZFTest_Layout_Controller_Plugin_Layout'
  14. ));
  15. ?>


ZFTest_Layout_Controller_Plugin_Layout sluzy do przelaczania layout'ow w zaleznosci od modulow. Czyli inny layout dla 'default' i inny dla 'admin'.

Chcialbym moc robic $frontController->registerPlugin rowniez dla odpowiedniego modulu, tj rejestrowac inne pluginy dla 'default' i 'admin'. W chwilii obecnej oba pluginy są dostepne w obu modułach.

Próbowałem umieścić rejestrowanie pluginów w ZFTest_Layout_Controller_Plugin_Layout gdzie przelaczam sie miedzy layoutami, ale wówczas nie działają mi te pluginy, dostaje np komunikat:

Fatal error: Call to a member function headTitle() on a non-object in C:\wamp\www\Zend\test\library\ZFTest\Controller\Plugin\ViewSetup.php on line 54

Czyli tak, jakbym nie mogl rejestrowac pluginów poza bootstrap'em.

Jak rozwiązać ten problem?

Chcialbym uzyskac cos takiego:
  1. <?php
  2. // dla module 'default'
  3. $frontController->registerPlugin(new ZFTest_Controller_Plugin_ActionSetup());
  4. $frontController->registerPlugin(new ZFTest_Controller_Plugin_ViewSetup(), 98);
  5.  
  6. // dla module 'admin'
  7. $frontController->registerPlugin(new ZFTest_Admin_Controller_Plugin_ActionSetup());
  8. $frontController->registerPlugin(new ZFTest_Admin_Controller_Plugin_ViewSetup(), 98);
  9. ?>
lucassus
Cytat(Skyline @ 27.05.2008, 00:04:51 ) *
ZFTest_Layout_Controller_Plugin_Layout sluzy do przelaczania layout'ow w zaleznosci od modulow. Czyli inny layout dla 'default' i inny dla 'admin'.


Do przelączania layout'ów pomiędzy modułami nie trzeba plugin-u winksmiley.jpg
To dzieje się automatycznie jeśli masz dobrze zrobioną struktórę katalogów i nazwy plików (layout.phtml)
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.