Mam problem z ACL'em. Otóż Gdy nie włączę wtyczki to podczas wbicia niepoprawnego adresu następuje przekierowanie na kontroler i akcję error z błędem ControllerNotFound. Jeżeli podepnę wtyczkę, to następuje error ale z błędem OtherError i w treści pisze resource "nazwa_kontrolera" not found. Próbowałem ustawić ręcznie akcję i kontroler przy warunku $acl->has($controller), ale wtedy aplikacja się zapętlała (zapewne przez funkcję preDispatch, zmiana na loopstartup nie przyniosła efektu). Co można zrobić ? kod plugina zamieszczam poniżej:
<?php class My_Plugins_Acl extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { $viewRenderer = Zend_Controller_Action_HelperBroker::getHelper( 'ViewRenderer' ); $view = $viewRenderer->view; $view->ControllerName = $request->getControllerName(); $view->ActionName = $request->getActionName(); $view->baseUrl = $request->getBaseUrl(); if($request->getControllerName() != 'logowanie' || $request->getActionName() != 'index'){ } if (Zend_Auth::getInstance()->hasIdentity()){ $role = Zend_Auth::getInstance()->getStorage()->read()->role; $ip = Zend_Auth::getInstance()->getStorage()->read()->ip; }else{ $role = 'gosc'; } $acl = new Acl_Shop(); if (!$acl->isAllowed($role, $request->getControllerName(), $request->getActionName())){ $request->setModuleName('default') ->setControllerName('logowanie') ->setActionName('index') ->setDispatched(false); } } }