Ben bir Acl hangi plug-in Zend_Controller_Plugin_Abstract
, bu plug-in tüm Acl kod kolları uzanır var.
Bu plug-in, örneğin bir özel durum atılır istiyorum bir Exception_Unauthorised
ve sonra benim ErrorController
, bu şekilde kullanabilir miyim aynı Acl farklı uygulamalar için plug-in ve işlemek için ErrorController
kullandığınız her durumda bu idare farklı her uygulamada - ihtiyaç halinde.
Sorun plug-in bir özel durum atma yürütülmesini orijinal Harekete durmuyor olmasıdır. Yani orijinal Eylem çıkışının ve ErrorController
çıkışı ile sonuna kadar.
Nasıl meydana gelen orijinal Harekete durdurmak için bir plug-in atılmış bir durum alabilirim?
Case 1
// This throws the `Exception_NoPermissions`, but it does not get caught by
// `ErrorController`
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
parent::preDispatch($request);
throw new Exception_NoPermissions("incorrect permissions");
}
Case 2
// This behaves as expected and allows me to catch my Exception
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
parent::preDispatch($request);
try
{
throw new Exception_NoPermissions("incorrect permissions");
}
catch(Exception_NoPermissions $e)
{
}
}
Case 3
Ben sorunu denetleyici değiştirerek, nerede bu olduğunu düşünüyorum.
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
parent::preDispatch($request);
// Attempt to log in the user
// Check user against ACL
if(!$loggedIn || !$access)
{
// set controller to login, doing this displays the ErrorController output and
// the login controller
$request->getControllerName("login");
}
}