Какой способ использовать Zend_Acl в View, чтобы показать / скрыть части представления - PullRequest
5 голосов
/ 02 января 2011

Мне интересно, как использовать Zend_Acl, чтобы показать / скрыть части изображения?Я думаю, я буду

  1. Создать плагин контроллера, который передает зарегистрированному пользователю + acl для просмотра

     $this->view->loggedInUser = Zend_Auth::getIdentity();
     $this->view->acl = Zend_Registry::get('acl');
    
  2. Затем в сценариях представлениясделать что-то вроде

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

Или есть способ получше?Или я должен использовать View Helper?Это возвращает логическое значение, разрешен ли вошедший в систему пользователь?

1 Ответ

4 голосов
/ 01 февраля 2011

Вы используете его в представлении, поэтому для меня 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);
    }
}
...