Zend_Controller_Request :: setRedirect()似乎不起作用?

时间:2010-08-02 14:19:52

标签: zend-framework

我不确定从资源对象调用setRedirect是否是最好的方法。但我想知道为什么这似乎没有做任何事情。我在predispatch控制器插件中有这个

function preDispatch(Zend_Controller_Request_Abstract $req) {
    ...
    if (!$acl->isAllowed($role, $resource, $privilege)) {  
        ...
        $res = $this->_response;
        $res->setRedirect('/error/?error-handler=unauthorized', 403);
    }
}

如果您更喜欢整个代码,请点击@ pastebin

1 个答案:

答案 0 :(得分:4)

setRedirect()不会阻止dispatchloop执行。要进行重定向,您必须发送标题并退出流程。

$res->setRedirect('/error/?error-handler=unauthorized', 403);
$res->sendHeaders();
exit();

更好的方法是使用重定向器Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->gotoUrl()