2013-10-02 27 views
0

我正在实现CakePHP ACL。我希望我的模型同时为请求者和控制的,所以我将它设置这样的:类型为'both'的CakePHP 2.x中的ACL

public $actsAs = array(
    'Acl' => array(
     'type' => 'both' 
    ) 
); 

我遇到的问题是,是,我的模型有不同的父依赖于节点的类型(ACO或ARO)。

我想通过做这样的事情与parentNode()函数来解决这个问题:

public function parentNode() { 

    if('ARO' == $this->type) { 
     return 'ARO parent'; 
    } else { 
     return 'ACO parent'; 
    } 

} 

所以基本上让它回归合适的父为每一个案件。

这是可能的,如果是这样,如何?

=====更新 - 2013年10月4日=====

我已经提交了正在看:-)

https://cakephp.lighthouseapp.com/projects/42648/tickets/4122-add-type-as-argument-to-the-parentnode-function#ticket-4122-2

+0

感谢您的帮助。这样做:) –

回答

0

我的官方票我们一直在Cake逻辑中进行挖掘。我想我为这个问题想出了一个非常简单而有用的解决方案。

使用CakePHP 2.4.1,我编辑的文件 /lib/Cake/Model/Behavior/AclBehavior.php

上线109记载:

$parent = $model->parentNode(); 

我已经简单地添加的类型作为参数:

$parent = $model->parentNode($type); 

这样一来,我的parentNode()函数可以是这样的:

public function parentNode($sType) { 

    if('ARO' == $sType) { 
     return 'ARO parent'; 
    } else { 
     return 'ACO parent'; 
    } 

} 

我高兴:-)