ACL в CakePHP 2.x с типом 'оба'

Я внедряю 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

1 ответ

Решение

Я немного покопался в логике 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';
    }

}

Я счастлив:-)

Другие вопросы по тегам