2010-08-02 178 views
0

我不確定是否從資源對象調用setRedirect是最好的方法。但我想知道爲什麼這似乎沒有做任何事情。我有這個在predispatch控制器插件Zend_Controller_Request :: setRedirect()似乎不工作?

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

如果u喜歡整個代碼,得到它@pastebin

+0

發佈您的代碼。 – 2010-08-02 14:41:29

回答

4

setRedirect()不會停止執行dispatchloop。要做重定向,你必須發送頭文件並退出進程。

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

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