我有一个带有editAction()
.
class WidgetController extends BaseController
{
public function editAction()
{
//code here
}
}
这个控制器扩展了一个基本控制器,它在允许用户编辑记录之前检查用户是否登录。
class BaseController extends Zend_Controller_Action
{
public function init()
{
if ($this->userNotLoggedIn()) {
return $this->_redirect('/auth/login');
}
}
}
但是,现在我正在执行 AJAX 请求,我将返回一个 JSON 响应,因此重定向将不再起作用。我需要停止进一步的控制器执行,以便立即发送响应:
class BaseController extends Zend_Controller_Action
{
public function init()
{
if ($this->userNotLoggedIn()) {
if ($this->_request->isXmlHttpRequest()) {
$jsonData = Zend_Json::encode(array('error'=>'You are not logged in!'));
$this->getResponse()
->setHttpResponseCode(401)
->setBody($jsonData)
->setHeader('Content-Type', 'text/json');
//now stop controller execution so that the WidgetController does not continue
} else {
return $this->_redirect('/auth/login');
}
}
}
}
如何停止控制器执行?