Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF]Dostęp do zasobu layoutu z Bootstrapa modułu
Forum PHP.pl > Forum > PHP > Frameworki
darko
Witam. Problem zapewne błahy, jednak nie mogę przez to przebrnąć. Mam aplikację napisaną w ZF z podziałem na moduły (ZF 1.9.5.). I teraz próbuję przy pomocy Bootstrap.php w powiedzmy module X dostać się do zasobu layoutu. Moim celem jest jedynie dołączenie skryptów js i arkuszy css w sekcji head dokumentu generowanego dla modułu X. Próbowałem tak:
  1. class X_Bootstrap extends Zend_Application_Module_Bootstrap {
  2.  
  3. protected function _initHtml() {
  4. $this->bootstrap("layout");
  5. $layout = $this->getResource("layout");
  6. $view = $layout->getView();
  7. $url = '/COS_TAM';
  8. // css
  9. $view->headLink()->appendStylesheet($url."/application/modules/X/views/css/abc.css");
  10. $view->headLink()->appendStylesheet($url."/application/modules/X/views/css/xyz.css");
  11. // js
  12. $view->headScript()->appendFile($url . '/application/modules/X/views/js/abc.js');
  13. $view->headScript()->appendFile($url . '/application/modules/X/views/js/xyz.js');
  14. }
  15. }

i:
Kod
Fatal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "layout" not found' in /var/www/XXX/library/Zend/Application/Bootstrap/BootstrapAbstract.php:687 Stack trace: #0 /var/www/XXX/library/Zend/Application/Bootstrap/BootstrapAbstract.php(622): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('layout') #1 /var/www/XXX/library/Zend/Application/Bootstrap/BootstrapAbstract.php(579): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap('layout') #2 /var/www/XXX/application/modules/X/Bootstrap.php(13): Zend_Application_Bootstrap_BootstrapAbstract->bootstrap('layout') #3 /var/www/XXX/library/Zend/Application/Bootstrap/BootstrapAbstract.php(662): X_Bootstrap->_initHtml() #4 /var/www/XXX/library/Zend/Application/Bootstrap/BootstrapAbstract.php(615): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('html') #5 /var/www/XXX/library/Zend/Application/Bootstrap/BootstrapAbstract.php(579 in /var/www/XXX/library/Zend/Application/Bootstrap/BootstrapAbstract.php  on line 687


Plik Bootstrap.php jest we właściwym miejscu (jak w pozostałych modułach, dla których jednak nie zachodziła potrzeba dopisywania czegokolwiek do Bootstrapów), ścieżki się zgadzają, bo sprawdziłem, wszystko powinno działać, jednak nie działa.

Próbowałem też tak:

  1. class X_Bootstrap extends Zend_Application_Module_Bootstrap {
  2.  
  3. protected function _initHtml() {
  4. //$this->bootstrap("layout");
  5. parent::bootstrap("layout");
  6. //$layout = $this->getResource("layout");
  7. $layout = parent::getResource("layout");
  8. $view = $layout->getView();
  9.  
  10. $url = '/COS_TAM';
  11. // css
  12. $view->headLink()->appendStylesheet($url."/application/modules/X/views/css/abc.css");
  13. $view->headLink()->appendStylesheet($url."/application/modules/X/views/css/xyz.css");
  14. // js
  15. $view->headScript()->appendFile($url . '/application/modules/X/views/js/abc.js');
  16. $view->headScript()->appendFile($url . '/application/modules/X/views/js/xyz.js');
  17. }
  18. }

Jednak dalej to samo. Proszę o jakiekolwiek wskazówki/uwagi, co źle robię.
thm
w application.ini
Kod
resources.layout[] =
darko
Po czy przed:
resources.layout.layoutpath = APPLICATION_PATH "/layouts"
?
batman
  1. resources.modules = ""
  2. TWOJA_NAZWA_MODULU.resources.layout.layoutPath = APPLICATION_PATH "/modules/layouts/scripts"


W miejscu TWOJA_NAZWA_MODULU wstaw moduł, w którym chcesz, żeby to działało.
darko
Wow! To naprawdę działa smile.gif Po raz kolejny wielkie dziękuję ~batman
batman
Właśnie zauważyłem, że wkradł się błąd do mojego przykładu powinno być tak:
  1. TWOJA_NAZWA_MODULU.resources.layout.layoutPath = APPLICATION_PATH "/modules/TWOJA_NAZWA_MODULU/layouts/scripts"

Oczywiście położenie layoutu to sprawa umowna, ale lubię jak wszystko jest poprawnie napisane winksmiley.jpg
darko
Wystarczy też przekierować ścieżkę layoutu dla modułu do lokalizacji, gdzie rezyduje layout ogólny, wspólny dla wszystkich modułów, tak czy siak pomogłeś bardzo, poradziłem sobie, dzięki wielkie. 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.