2011-03-28 64 views
1

我试图找出ACL,所以我想通过本教程的书(1.3蛋糕的工作,由方式)。CakePHP的 - 包括ACL组件提供了致命的错误:的ConnectionManager了getDataSource :: - 不存在的数据源

我创建数据库表(阿罗斯ACOS,aros_acos)。然而,当我尝试在我的AppController中包含Acl组件时,当我尝试访问任何页面时,出现致命错误:

致命错误(256):ConnectionManager :: getDataSource - 不存在的数据源[ CORE /蛋糕/库/模型/ connection_manager.php,线102]

在我的AppController:

public $components = array('Auth','Session','RequestHandler','Acl'); 

从阵列使一切重新工作的组件删除的ACL。当我在AppController中注释掉一些代码

的错误消失。这里是代码 - 注释的行是罪魁祸首。 AppModel :: slugList()是一个自定义函数,它只是基于一个slu does查找查询。它工作正常,至少直到Acl被包括在内。

 if ($this->modelClass != 'Country'){ 
      $this->loadModel('Country'); 
     } 
     if ($this->modelClass != 'Category'){ 
      $this->loadModel('Category'); 
     } 
     $this->Session->write('Country',1); 
     $this->Session->write('City',1); 
     $_countryId = $this->Session->read('Country'); 
     //$_countries = $this->Country->slugList(); 
     $_cityId = $this->Session->read('City'); 
     //$_cities = $this->Country->City->slugList(); 

编辑 - 也,三次通知显示:

Notice (8): Trying to get property of non-object [CORE/cake/libs/model/datasources/dbo_source.php, line 813] 
Notice (8): Trying to get property of non-object [CORE/cake/libs/model/datasources/dbo_source.php, line 838] 
Notice (8): Trying to get property of non-object [CORE/cake/libs/model/datasources/dbo_source.php, line 841] 

回答

0

嗯,我有一个名为 “权限” 模式,我的模式 “角色” 是actsAs的ACL请求者是有关。这是问题。我猜Acl组件在某个地方使用了这个名字的类?

1

此错误是由你的车型和/或数据库表结构之间存在不一致造成的。调试它的关键是一套通知。在dbo_source.php :: line 813上插入一个var_dump语句会给你提示你的break的位置。例如:

foreach ($model->{$type} as $assoc => $assocData) { 
    $linkModel =& $model->{$assoc}; 
    $external = isset($assocData['external']); 

    var_dump($model->name, $assoc); 
    if ($model->useDbConfig == $linkModel->useDbConfig) { 
     if (true === $this->generateAssociationQuery($model, $linkModel, $type, $assoc, $assocData, $queryData, $external, $null)) { 
      $linkedModels[$type . '/' . $assoc] = true; 
     } 
    } 
} 

就我而言,我有我忘了创建数据库表定义的模型。