在 View 中使用 Zend_Acl 来显示/隐藏部分视图的方法是什么

发布于 2024-10-10 15:08:35 字数 418 浏览 2 评论 0原文

我想知道使用 Zend_Acl 来显示/隐藏部分视图的方法是什么?我想我会

  1. 创建一个控制器插件来传递登录用户+ acl 来查看

     $this->view->loggedInUser = Zend_Auth::getIdentity();
     $this->view->acl = Zend_Registry::get('acl');
    
  2. 然后在视图脚本中执行类似的操作

    $this->acl->isAllowed($this->view->loggedInUser, '资源', '权限');
    

或者有更好的方法吗?或者我应该使用视图助手?返回一个布尔值是否允许登录用户?

I am wondering whats the way to use Zend_Acl to show/hide parts of view? I am thinking I will

  1. Create a Controller Plugin that passes the logged in user + acl to view

     $this->view->loggedInUser = Zend_Auth::getIdentity();
     $this->view->acl = Zend_Registry::get('acl');
    
  2. Then in view scripts do something like

    $this->acl->isAllowed($this->view->loggedInUser, 'resource', 'privilege');
    

Or is there a better way? Or should I use a View Helper? That returns a boolean whether the logged in user is allowed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哭了丶谁疼 2024-10-17 15:08:35

您在视图中使用它,所以对我来说 ViewHelper 是正确的位置 - 我已经这样做过一次:

class Zend_View_Helper_HasAccess extends Zend_View_Helper_Abstract
{
    private $_acl;
    public function hasAccess($role, $controller, $action)
    {
        if (!$this->_acl) {
            $this->_acl = Zend_Controller_Front::getInstance()->getPlugin('Acl'); 
            //In yout case registry, but front controller plugin is better way to implement ACL
        }
        return $this->_acl->isAllowed($role, $controller, $action);
    }
}

You are using it in the view, so for me ViewHelper is correct place for that - I've done it once that way:

class Zend_View_Helper_HasAccess extends Zend_View_Helper_Abstract
{
    private $_acl;
    public function hasAccess($role, $controller, $action)
    {
        if (!$this->_acl) {
            $this->_acl = Zend_Controller_Front::getInstance()->getPlugin('Acl'); 
            //In yout case registry, but front controller plugin is better way to implement ACL
        }
        return $this->_acl->isAllowed($role, $controller, $action);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文