0

我正在实现 CakePHP 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-04 =====

我已经提交了正在查看的官方票 :-)

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

4

1 回答 1

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';
    }

}

我开心 :-)

于 2013-11-07T08:21:22.227 回答