Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] set_include_path - modele w różnych modułach
Forum PHP.pl > Forum > PHP > Frameworki
Apocalyptiq
Tak ustawiam w swoim Bootstrap'ie ścieżke inkludowania:
  1. <?php
  2.            get_include_path() . PATH_SEPARATOR .
  3.            APPLICATION_PATH . '/../library/' . PATH_SEPARATOR .
  4.            APPLICATION_PATH . '/models'
  5.        );
  6. ?>

Jak tylko wprowadziłem moduły, pojawił się problem - każdy moduł ma swój folder z modelami (application/modules/nazwa_modułu/models/).
Jak w takim przypadku mogę ustawić ten include_path?
Podobnie się ma sprawa z kontrollerami i widokami.
batman
Możesz dodać tyle ścieżek ile masz modułów. Jednak jest to bardzo złe rozwiązanie. Bardzo szybko padnie Ci wydajność.
A po co Ci te ścieżki w include_path? Jeśli tylko po to, by automatycznie ładować klasy, to szkoda wydajności. Wymagane klasy możesz dołączać poprzez require_once.
Jeśli chcesz, by Twoje moduły były widoczne, wystarczy, że użyjesz funkcji addModuleDirectory, wywołaną na obiekcie front controllera (najlepiej w pliku bootstrap).
Apocalyptiq
Z tego co widzę, kontrollery do poszczególnych modułów Zend sam znajduje, co do widoków mam obiekt $request w pluginie ViewSetup który integruje mi PHPTAL'a (system szablonów) z Zendem, a w nim zmienną module - nazwę aktualnego modułu, więc tam z ustawieniem ścieżek do templaków nie ma problemu smile.gif
  1. <?php
  2. class My_Controller_Plugin_ViewSetup extends Zend_Controller_Plugin_Abstract
  3. {
  4. public function dispatchLoopStartup (Zend_Controller_Request_Abstract $request){
  5. ....
  6.        $view->addScriptPath(APPLICATION_PATH . '/modules/' . $request->module . '/views/templates')
  7.             ->doctype('XHTML1_STRICT');
  8.  
  9.        $viewRenderer->setView($view)
  10.                     ->setViewSuffix('xhtml')
  11.                     ->init();
  12.  
  13.        // setup Zend_Layout
  14.        Zend_Layout::startMvc(array(
  15.            'layoutPath' => APPLICATION_PATH . '/modules/' . $request->module . '/views/layouts',
  16.             'layout' => 'main' ,
  17.             'viewSuffix' => 'xhtml'
  18.        ));
  19. ....
  20. }
  21. }
  22. ?>

Co do modułów chyba własnie najlepiej ręcznie requirować je, dzięki za pomoc ;-)
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.