2013-08-24 2 views
1

Я использую Propel ORM для своих моделей &. Мои модели находятся под/моделями.
Я добавил строку в мой файл 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; 
} 

В моей библиотеке есть гентские праздники я:

  • Controller
    • Helper
    • Plugin

И в помощнике у меня есть "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 не может быть найден. Ошибка:

Fatal error: Class 'RoleQuery' not found in /Applications/MAMP/htdocs/GentseFeesten/library/GentseFeesten/Controller/Helper/Acl.php on line 35

Я включил мой Acl плагин в Bootstrap, как это:

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

Кто-нибудь знает, почему он не может найти мои модели в плагине?

ответ

0

Мне пришлось сначала инициализировать плагин propel, а затем плагин acl .... Просто изменил положение двух функций, и это сработало!

Смежные вопросы