【问题标题】:Whats the way to use Zend_Acl in View to show/hide parts of view在视图中使用 Zend_Acl 显示/隐藏部分视图的方法是什么
【发布时间】:2011-06-02 11:30:02
【问题描述】:
我想知道使用 Zend_Acl 显示/隐藏部分视图的方法是什么?我想我会的
-
创建一个控制器插件,将登录的用户+acl传递给查看
$this->view->loggedInUser = Zend_Auth::getIdentity();
$this->view->acl = Zend_Registry::get('acl');
-
然后在视图脚本中执行类似的操作
$this->acl->isAllowed($this->view->loggedInUser, 'resource', 'privilege');
或者有更好的方法吗?还是我应该使用 View Helper?是否允许登录用户返回一个布尔值?
【问题讨论】:
标签:
zend-framework
zend-acl
zend-controller-plugin
【解决方案1】:
您在视图中使用它,所以对我来说 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);
}
}