Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework 无法创建第一个ACL示例_Zend Framework_Acl - Fatal编程技术网

Zend framework 无法创建第一个ACL示例

Zend framework 无法创建第一个ACL示例,zend-framework,acl,Zend Framework,Acl,我想将我的ACL插件加载到应用程序中,然后开始使用ACL 我按照这个开始学习ACL 我是这样做的 class My_ACL extends Zend_Acl { public function __construct() { $this->addRole(new Zend_Acl_Role('member')); $this->addRole(new Zend_Acl_Role('admin')); //discussions is a module

我想将我的ACL插件加载到应用程序中,然后开始使用ACL

我按照这个开始学习ACL

我是这样做的

 class My_ACL extends Zend_Acl {

public function __construct() {


    $this->addRole(new Zend_Acl_Role('member'));
    $this->addRole(new Zend_Acl_Role('admin'));

    //discussions is a module name
    $this->add(new Zend_Acl_Resource('discussions'));

    //privileges is a module name
    $this->add(new Zend_Acl_Resource('privileges'));

     //default is a the default mdule
    $this->add(new Zend_Acl_Resource('default'));


    //allow admin every thing
    $this->allow('admin');
   //tmp just for testing
      $this->allow('member');

}
在插件中,我删除了所有内容,只保留了一条echo语句

 class Application_Plugin_Acl extends Zend_Controller_Plugin_Abstract {

private $_acl = null;

public function __construct() {
    $this->_acl = new My_ACL();
}

public function preDispatch(Zend_Controller_Request_Abstract $request) {

    $role = (Zend_Auth::getInstance()->hasIdentity()) ? 'admin' : 'member';


echo $this->_acl->isAllowed($role, $request->getModuleName() . ':' . $request->getControllerName() . ':' . $request->getActionName());

}
但是,当我尝试访问系统的任何url时,就会发生此错误

  Fatal error: Uncaught exception 'Zend_Acl_Exception' with message 'Resource 'default:error:error' not found' in    

  D:\ZendFramework\library\Zend\Controller\Plugin\Broker.php on line 312
  ( ! ) Zend_Acl_Exception: Resource 'default:error:error' not found in                         D:\ZendFramework\library\Zend\Acl.php on line 365
}

添加此行

if($request->getControllerName() == 'error')  return ;
之后

基本上,只要发生应用程序错误,ZF就会将请求对象更改为模块默认值、错误控制器及其错误操作。在这种情况下,您没有创建任何资源。 按照我说的做,您将能够看到“应用程序错误”页面,这将帮助您解决第一个问题

  $role = (Zend_Auth::getInstance()->hasIdentity()) ? 'admin' : 'member';