5

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 を使用する必要がありますか? ログインしたユーザーが許可されているかどうかをブール値で返しますか?

4

1 に答える 1

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);
    }
}
于 2011-01-31T21:11:23.670 に答える