2011-01-02 5 views
5

Ich frage mich, wie man Zend_Acl benutzt, um Teile der Ansicht anzuzeigen/zu verbergen? Ich denke ich werdeWie kann ich Zend_Acl in der Ansicht verwenden, um Teile der Ansicht ein-/auszublenden?

  1. ein Controller-Plugin erstellen, die der angemeldete Benutzer übergibt + acl

    $this->view->loggedInUser = Zend_Auth::getIdentity(); 
    $this->view->acl = Zend_Registry::get('acl'); 
    
  2. Dann in View Skripten etwas tun, wie

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

Oder gibt es einen besseren Weg? Oder sollte ich einen View Helper verwenden? Gibt das einen Boolean zurück, ob der angemeldete Benutzer erlaubt ist?

Antwort

4

Sie verwenden es in der Ansicht, so dass für mich View Helfer für die richtige Stelle ist - ich habe es getan, wenn diese Weise:

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); 
    } 
}