无法访问新命名空间中的模型

时间:2013-08-24 12:42:46

标签: php zend-framework propel zend-acl

我将Propel ORM用于我的模型&映射。我的模型在/ models下。
我在index.php文件中添加了一行,以确保找到我的模型:

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
   realpath(APPLICATION_PATH . '/../library'),
   realpath(APPLICATION_PATH . '/models'),//propel
   get_include_path(),
)));

我可以在我的模块中使用查询,工作正常。但是当我想在我的Acl Helper中使用它时,他找不到模型......

我在Zend Framework项目中创建了名为“GentseFeesten”的命名空间 我已将此添加到我的Bootstrap.php中:

protected function _initAutoload() 
{
    $moduleLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath' => APPLICATION_PATH));
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace('GentseFeesten_');
    return $moduleLoader;
}

在我的GentseFeesten图书馆中,我有:

  
      
  • 控制器
      
        
    • 辅助
    •   
    • 插件
    •   
  •   

在Helper我有“Acl.php”。我有一个函数setRoles():

private function setRoles() {

    // Database query
    $roles = RoleQuery::create()
        ->orderById()
        ->find();

    foreach ($roles as $role) {
        if($parentrole == 0)
        {
            $this->local_acl->addRole(new Zend_Acl_Role($role->getRole()));
        }
        else{
            $this->local_acl->addRole(new Zend_Acl_Role($role->getRole()), $parentrole);
        }
        $parentrole = $role->getRole();
    }
}

但无法找到RoleQuery。错误:

  

致命错误:第35行的/Applications/MAMP/htdocs/GentseFeesten/library/GentseFeesten/Controller/Helper/Acl.php中找不到类'RoleQuery'

我已将我的Acl插件包含在Bootstrap中,如下所示:

new GentseFeesten_Controller_Helper_Acl($this->getResource('frontController'));
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->registerPlugin(new GentseFeesten_Controller_Plugin_Acl());

有谁知道为什么他在插件中找不到我的模型?

1 个答案:

答案 0 :(得分:0)

我必须首先初始化propel插件然后初始化acl插件....只是改变了两个功能的位置,它起作用了!