ZEND ACL角色 - 如何在帮助程序中访问它们

时间:2012-10-03 07:30:24

标签: php zend-framework acl

我有application \ plugins \ Acl.php:

class Application_Plugin_Acl extends Zend_Controller_Plugin_Abstract {
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
    $acl = new Zend_Acl();

我在那里添加角色。我也有heleper HasAccess.php:

class Zend_View_Helper_HasAccess extends Zend_View_Helper_Abstract {
    public function hasAccess($role, $action, $controller) {
    if (!$this->_acl) {
        $acl = Zend_Controller_Front::getInstance()->getPlugin('Application_Plugin_Acl');
    }
    return $acl->isAllowed($role, $controller, $action);

我无法访问视图文件中的角色:

$this->hasAccess('user', 'partner', 'news')

1 个答案:

答案 0 :(得分:0)

在application \ plugins \ Acl.php中,您必须将该ACL实例附加到您的视图

class Application_Plugin_Acl extends Zend_Controller_Plugin_Abstract {
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
    $acl = new Zend_Acl();

    // Set ACL to view files
    $layout = Zend_Layout::getMvcInstance();
    $view   = $layout->getView();
    $view->acl = $acl;
}

然后,您可以在视图文件中使用ACL:

$this->acl->hasAccess(...);

如果要在View Helpers中使用ACL,请使用:

$this->view->acl->hasAccess(...);