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

时间:2011-01-02 12:37:52

标签: zend-framework zend-acl zend-controller-plugin

我想知道如何使用Zend_Acl显示/隐藏部分视图?我想我会

  1. 创建一个Controller插件,将登录的用户+ acl传递给视图

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

    的操作
    $this->acl->isAllowed($this->view->loggedInUser, 'resource', 'privilege');
    
  3. 还是有更好的方法吗?或者我应该使用View Helper?返回一个布尔值是否允许登录用户?

1 个答案:

答案 0 :(得分:4)

你在视图中使用它,所以对我来说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);
    }
}