2012-09-10 67 views
1

即時通訊http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html < ---本教程和猜測是什麼? ;)它不工作,即時通訊使用CakePHP 2.2.2 ...我得到一個錯誤cakephp 2.2 Acl無法正常工作(組)

Undefined index: id [CORE/Cake/Model/AclNode.php, line 140]

AclNode::node() - Couldn't find Aro node identified by "Array ([Aro0.model] => User [Aro0.foreign_key] =>) " Error: An Internal Error Has Occurred.

這個錯誤是becouse我沒有得到我的GROUP_ID在我的用戶模型

public function bindNode($user) { 
      return array('model' => 'Groups', 'foreign_key' => $user['Users']['groups_id']); 
     } 

所以在這種功能$用戶VAR只包含用戶名和密碼......沒有GROUP_ID的

請幫傢伙...

回答

1

型號名稱必須是單數。

'model' => 'Group' 
$user['Users']['group_id'] //in your DB, put "group_id" to, not "groups_id" 

確保您創建的模型是「組」。 :)

0

我剛剛遇到此問題。追溯代碼的問題是,我的模型被稱爲「AdminUser」,而不是默認的「User」。改變userModel設置爲我解決了它。

public $components = array(
    'Acl', 
    'Auth' => array(
     'authorize' => array(
      'Actions' => array(
       'actionPath' => 'controllers', 
       'userModel' => 'AdminUser' 
      ) 
     ) 
    ), 
    'Session' 
); 

看着你bindNode方法看起來你使用了一個名爲「用戶」而不是「用戶」這樣設置的usermodel到「用戶」可能做的伎倆模型等。

我希望有幫助
皮特