我有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')
答案 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(...);