Zend Framework Kontrolör Eklentiler atılmış Taşıma Durumlar

0 Cevap php

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");
    }
}

0 Cevap