如何在Zend中为模块添加资源?

时间:2011-06-05 06:40:05

标签: php zend-framework module bootstrapping

我有一个测试模块。

我在 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 个答案:

答案 0 :(得分:4)

您应该能够以这种方式在测试模块引导类(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;

    }

}

答案 1 :(得分:0)

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_' )  
                                    )
        ));           
}

现在正在运作。