首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend_Acl我需要$acl->hasParentResource()

Zend_Acl我需要$acl->hasParentResource()
EN

Stack Overflow用户
提问于 2013-10-02 17:43:53
回答 1查看 35关注 0票数 0

我使用Zend_Acl在视图中按角色和资源检查允许的内容,以显示特定的内容。这很好,但是我希望有一个类似hasParentResource()的方法来检查资源的父级。

举个例子:

代码语言:javascript
复制
$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');

认为:

代码语言:javascript
复制
<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; ?>

如果用户无法访问资源1、2或3,则需要隐藏包含<h2>标记的内容。

我知道,我可以写这个:

代码语言:javascript
复制
<?php if($this->acl->isAllowed('admin::resource1') || $this->acl->isAllowed('admin::resource2') || $this->acl->isAllowed('admin::resource3')): ?>
    <h2>Resources</h2>
    ...
<?php endif; ?>

但是,我并不是只有这三种资源,如果我改变了一些东西,我不想在这些语句中添加新的资源。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-02 17:52:55

使用inheritsRole函数。

使:

代码语言:javascript
复制
if($this->acl->inheritsRole('user', 'admin')) {
  /* display content for an admin */
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19143348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档