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 =====
Я отправил официальный билет, который просматривается:-)
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';
}
}
Я счастлив:-)