视图中的 ZF2 ACL 检查 link

ZF2 ACL check link in view

我已经在我的 bootstrap 中设置了我的角色、资源和权限,并且在我的布局中基于此设置了一个导航菜单,这很有效。

我现在尝试做的是创建一个管理面板,如果当前登录的用户具有这些权限,则可以编辑/删除 links。例如我可能有多个可以查看 cms 页面列表的角色,但只有某些角色可以编辑 cms 页面,并且只有某些角色可以删除 cms 页面。

目前我只是在检查用户是否登录:

<?php if($user = $this->identity()): ?>
    <?php if($user['role'] == 'admin'):?>
        <a href="/delete-url">Delete</a>
    <?php endif;?>
<?php endif;?>

如何从任意link(如上)的视图中检查当前用户角色对指定资源的权限?

ACL 视图助手被注入到布局中,因此要检查角色是否有权访问资源,我们可以调用 $this->layout()->acl->isAllowed

在此代码段中,我们检查用户是否已登录($this->identity() returns false 如果未登录,或者如果已登录则为详细信息数组),然后如果用户对资源具有 'delete' 权限:

<?php if($user = $this->identity()); //is logged in? ?>
    <?php if($this->layout()->acl->isAllowed($user['role'], $resource, 'delete')):?>
        <a href="/delete-url">Delete</a>
    <?php endif;?>
<?php endif;?>

isAllowed签名是isAllowed($role = null, $resource = null, $privilege = null)