Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Model
Forum PHP.pl > Forum > PHP > Frameworki
PawelC
Mam taki problem, napisałem sobie model i wszystko było by super gdyby nie to, że wywala mi błąd. Krótko mówiąc, jak wgram model Album.php do katalogu application/models to go nie widzi, a jak wgram do katalogu library to wszystko chodzi elegancko. Tak wygląda model:

  1. <?php
  2. class Album extends Zend_Db_Table {
  3.  
  4. public $_name = "gd_pliki";
  5.  
  6. }



Tak wygląda kontroler który korzysta z modelu Album

  1. <?php
  2.  
  3. class HelloController extends Zend_Controller_Action
  4. {
  5.  
  6. public function init()
  7. {
  8. $this->view->baseUrl = $this->_request->getBaseUrl();
  9. Zend_Loader::loadClass('Album');
  10. }
  11.  
  12.  
  13. public function indexAction()
  14. {
  15. $view=new Zend_View();
  16. $album = new Album();
  17. $this->view->albums = $album->fetchAll();
  18.  
  19. }
  20.  
  21.  
  22.  
  23.  
  24. }
Domyślam się że gdzieś zrobiłem błąd, tylko nie wiem gdzie, i pewnie lezy on w tym, że nie podałem ścieżki
-=Peter=-
W bootstrapie zainicjuj autoloadera modułów.

  1. $autoload = new Zend_Application_Module_Autoloader(array(
  2. 'namespace' => '',
  3. 'basePath' => 'sciezka/do/aplikacji',
  4. ));

Ten autoloader ładuje m. in. modele i formularze z katalogów models oraz forms. Zresztą przejrzyj sobie jego źródło, to będziesz wiedział z jakich katalogów jakie klasy ładuje.

Edit:
Model musi mieć przedrostek 'Model_', czyli model 'Album' ma być w pliku 'models/Album.php', a klasa ma się nazywać 'Model_Album'.
PawelC
Boostrap ma taką zawartość:

  1. <?php
  2.  
  3. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  4. {
  5.  
  6. protected function _initAutoload()
  7. {
  8. $autoloader = new Zend_Application_Module_Autoloader(array(
  9. 'namespace' => 'Default',
  10. 'basePath' => dirname(__FILE__),
  11. ));
  12. return $autoloader;
  13. }
  14.  
  15.  
  16.  
  17. }


A błąd mi wywala taki:



Cytat
Warning: include(Album.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\library\Zend\Loader.php on line 136

Warning: include() [function.include]: Failed opening 'Album.php' for inclusion (include_path='C:\wamp\www\application/../library;C:\wamp\www\library;c:/wamp/www/library') in C:\wamp\www\library\Zend\Loader.php on line 136



An error occurred

Application error

Exception information:
Message: File "Album.php" does not exist or class "Album" was not found in the file


Stack trace:
#0 C:\wamp\www\application\controllers\HelloController.php(11): Zend_Loader::loadClass('Album') #1 C:\wamp\www\library\Zend\Controller\Action.php(133): HelloController->init() #2 C:\wamp\www\library\Zend\Controller\Dispatcher\Standard.php(262): Zend_Controller_Action->__construct(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http), Array) #3 C:\wamp\www\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #4 C:\wamp\www\library\Zend\Application\Bootstrap\Bootstrap.php(77): Zend_Controller_Front->dispatch() #5 C:\wamp\www\library\Zend\Application.php(358): Zend_Application_Bootstrap_Bootstrap->run() #6 C:\wamp\www\public\index.php(43): Zend_Application->run() #7 {main}
Request Parameters:
array ( 'controller' => 'hello', 'action' => 'index', 'module' => 'default', )
Klasę nazwałem Model_Album i jest umieszczona w katalogu models aplikacji

pgrzelka
Peter Ci napisał że nazwa modelu musi mieć przedrostek 'Model_'
PawelC
Mam tak zrobione:
  1. <?php
  2. class Model_Album extends Zend_Db_Table {
  3.  
  4.  
  5. public $_name = "gd_pliki";
  6.  
  7.  
  8. }
seth-kk
http://framework.zend.com/manual/en/learni...utoloading.html - kilka informacji o nazywaniu klas i ich autoladowaniu
PawelC
A nie mogę zamiast modeli, tworzyć własne klasy i z nich korzystać? Co prawda spełniały by one funkcje modelu.

Już sobie poradziłem smile.gif
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.