Zend framework 如何在视图中使用Zend_Acl来显示/隐藏视图的某些部分

Zend framework 如何在视图中使用Zend_Acl来显示/隐藏视图的某些部分,zend-framework,zend-acl,zend-controller-plugin,Zend Framework,Zend Acl,Zend Controller Plugin,我想知道使用Zend_Acl显示/隐藏部分视图的方法是什么?我想我会的 创建一个控制器插件,将登录的用户+acl传递到视图 $this->view->loggedInUser = Zend_Auth::getIdentity(); $this->view->acl = Zend_Registry::get('acl'); 然后在视图中脚本执行如下操作 $this->acl->isAllowed($this->view->loggedInUs

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

  • 创建一个控制器插件,将登录的用户+acl传递到视图

     $this->view->loggedInUser = Zend_Auth::getIdentity();
     $this->view->acl = Zend_Registry::get('acl');
    
  • 然后在视图中脚本执行如下操作

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

  • 还是有更好的办法?还是应该使用视图辅助对象?这将返回一个布尔值,以确定是否允许登录用户?

    您正在视图中使用它,因此对我来说,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);
        }
    }