0
我在視圖中檢查角色和資源與Zend_Acl允許的內容顯示特定的內容。 這工作正常,但我想有一個像hasParentResource()方法來檢查資源的父母。
一個例子:
$acl->add(new Zend_Acl_Resource('default'));
$acl->add(new Zend_Acl_Resource('admin'));
$acl->add(new Zend_Acl_Resource('admin::resource1'), 'admin');
$acl->add(new Zend_Acl_Resource('admin::resource2'), 'admin');
$acl->add(new Zend_Acl_Resource('admin::resource3'), 'admin');
/roles
$acl->addRole(new Zend_Acl_Role('guest'));
$acl->addRole(new Zend_Acl_Role('user'), 'guest');
$acl->addRole(new Zend_Acl_Role('admin'), 'user');
//deny/allow
$acl->deny();
$acl->allow('guest', 'default');
$acl->allow('user', array(
'admin::resource1',
'admin::resource3'
));
$acl->allow('admin');
在視圖:
<h1>Admin</h1>
Lorem ipsum dolor...
<?php if($this->acl->hasParentResource('admin')): ?>
<h2>Resources</h2>
<?php if($this->acl->isAllowed('admin::resource1')): ?>
Ressource 1 stuff
<?php endif; ?>
<?php if($this->acl->isAllowed('admin::resource2')): ?>
Ressource 2 stuff
<?php endif; ?>
<?php if($this->acl->isAllowed('admin::resource3')): ?>
Ressource 3 stuff
<?php endif; ?>
<?php endif; ?>
的想法是隱藏包括<h2>
標籤的內容,如果用戶沒有訪問資源1,2或3個。
我知道,我可以這樣寫:
<?php if($this->acl->isAllowed('admin::resource1') || $this->acl->isAllowed('admin::resource2') || $this->acl->isAllowed('admin::resource3')): ?>
<h2>Resources</h2>
...
<?php endif; ?>
但是我沒有這三種資源,如果我改變了某些東西,我不想爲這些語句添加新的資源。
我不想因作用下做的,但這是一個很好的提示!我現在使用'$ this-> acl-> inherits($ resource,'admin')'。謝謝! – StinsonMaster