Мы имеем следующую структуру для примененияИзменения Родителя для ресурса - Zend ACL - 1.7.3
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
$acl = new Zend_Acl();
// application
$acl->add(new Zend_Acl_Resource('application1'));
// groups
$acl->add(new Zend_Acl_Resource('group1'), 'application1');
$acl->add(new Zend_Acl_Resource('group2'), 'application1');
// fields
$acl->add(new Zend_Acl_Resource('field1'), 'group1');
$acl->add(new Zend_Acl_Resource('field2'), 'group1');
$acl->add(new Zend_Acl_Resource('field3'), 'group2');
$acl->add(new Zend_Acl_Resource('field4'), 'application1');
// roles
$acl->addRole(new Zend_Acl_Role('applicant'));
$acl->addRole(new Zend_Acl_Role('admin'), 'applicant');
// permissions
$acl->allow('applicant', 'application1', 'view');
$acl->allow('applicant', 'group1', 'edit');
Это представляет собой базу данных приложений и групп колледжа/полей являются компонентами приложения колледжа. Из вышеизложенного у заявителя есть разрешение на редактирование поля2.
Вся структура хранится как объект acl в базе данных mysql.
Когда-нибудь администраторы решили перенести поле2 из группы1 в группу2, как можно было бы сменить объект acl?
Я проверил файл Acl.php, но нет методов, в которых один изменяет родителя ресурса и тем самым автоматически обновляет правила/разрешения.
Спасибо.
Shashikant
Я не уверен, что то, что предлагает cg, является хорошей идеей. Это фактически дублирование функциональности Zend_Acl в какой-то пользовательской системе, поэтому вы вообще не можете использовать Zend_Acl. Даже [Zend Documentation] [1] предлагает использовать сериализацию и хранение в базе данных или кеше, поэтому я думаю, что все в порядке. [1]: http://framework.zend.com/manual/en/zend.acl.advanced.html#zend.acl.advanced.storing –