Cakephp ACL组件不工作

Cakephp ACL组件不工作,cakephp,cakephp-2.0,acl,Cakephp,Cakephp 2.0,Acl,我在使用ACL组件时遇到问题: 在添加操作中保存用户时,我运行以下代码: $aro = $this->Acl->Aro; $aro->create(); $aro->save(array( 'alias' => $this->request->data['User']['username'], 'parent_id' =&

我在使用ACL组件时遇到问题:

在添加操作中保存用户时,我运行以下代码:

        $aro = $this->Acl->Aro;
            $aro->create();
            $aro->save(array(   
                'alias' => $this->request->data['User']['username'],
                'parent_id' => $this->request->data['User']['role_id'],
                'model' => 'User',
                'foreign_key' => $this->request->data['User']['id'],
        ));
但它会导致错误,说create方法不存在

哪种实现ACL的方法更好


我试着使用上面的代码以及parentNode和bindNodes的代码,但我正在努力……

首先,“
parent\u id
”应该是aro表中引用角色的aro节点的id,而不是角色id本身。您可以通过执行以下操作来实现:

$parentId = ClassRegistry::init('Aro')->field('id', array('model' => 'Role', 'foreign_key' => $this->request->data['User']['role_id']));

但是,我建议将AclBehavior附加到用户和角色模型,以便为您自动更新ARO表。仔细阅读这本书。这与您正在做的事情有直接的相似之处—只需将教程中的
替换为
角色
。使用该行为还将帮助您使用AclBehavior::node()方法,该方法将帮助您轻松获取节点引用,而无需直接查找Aro和Aco模型。

您真的需要ACL吗?或者它也可以在文件中静态声明,也可以在控制器中动态声明,等等?我知道这对于新手用户来说很复杂,但我对使用它很感兴趣。有关于CakePHP2的教程吗?我发现了一些东西,但对以前的版本来说很有趣!=一个很好的理由。如果您没有充分的理由使用ACL,请不要这样做。如果您只需要基本的基于动作/角色的访问,那么使用一个完全过多的功能是一个可怕的想法。宁愿尝试像这样轻量级的东西。@标记它是可以的。我正在做一个插件来管理基于角色的用户。你认为只有Auth或你的建议TinyAuth能奏效吗?我的目的是动态地为用户创建基于角色的权限。好吧,我想你可以将它与两者结合起来。Tiny将只基于动作工作,而核心ACL——理论上——也将支持基于行的访问(当时我使用控制器时从未使用过)。