Как добавить ресурс для модуля в Zend? - PullRequest
1 голос
/ 05 июня 2011

У меня есть тестовый модуль.

У меня есть класс в myproject / application / modules / test / lists / Profiles.php

class Test_List_Profiles {
    // class members    
} 

Теперь, когда я обращаюсь к этому классу в myproject / application / modules / test / controllers / ProfileController.php

public function indexAction() {
   $profilesList = new Test_List_Profiles();
}

Это дает мне следующую ошибку:

Fatal error: Class 'Test_List_Profiles' not found 

У меня есть следующая запись в Bootstrap.php :

protected function _initAutoload() {

  $autoLoader = Zend_Loader_Autoloader::getInstance();

  $testModuleLoader = new Zend_Loader_Autoloader_Resource(array(
            'basePath' => APPLICATION_PATH . 'modules/test',
            'namespace' => 'Test_',
            'resourceTypes' => array( 'form' => array( 'path'=>'forms/', 'namespace'=>'Form_' ),
                                      'list' => array( 'path'=>'lists/', 'namespace'=>'List_' )  
                                    )
        ));           
}

Как получить доступ к Test_List_Profiles классу в любом месте проекта?

Спасибо

Ответы [ 2 ]

4 голосов
/ 05 июня 2011

Вы можете добавить свой список ресурсов в класс начальной загрузки модуля тестирования (myproject / application / modules / test / Bootstrap.php) следующим образом:

class Test_Bootstrap extends Zend_Application_Module_Bootstrap {

    protected function _initAutoload(){

        $autoloader = $this->getResourceLoader();

        $autoloader->addResourceType('list', 'models/lists', 'Model_List');

        return $autoloader;

    }

}
0 голосов
/ 05 июня 2011

Произошла ошибка в пути basePath.Косая черта (/) отсутствует.

protected function _initAutoload() {

  $autoLoader = Zend_Loader_Autoloader::getInstance();

  $testModuleLoader = new Zend_Loader_Autoloader_Resource(array(
            'basePath' => APPLICATION_PATH . '/modules/test',
            'namespace' => 'Test_',
            'resourceTypes' => array( 'form' => array( 'path'=>'forms/', 'namespace'=>'Form_' ),
                                      'list' => array( 'path'=>'lists/', 'namespace'=>'List_' )  
                                    )
        ));           
}

Сейчас работает.

...