我正在使用zend 2开发其他Web服务。 对于错误处理,我在Module.php中使用下面提到的代码
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, array(
$this,
'onDispatchError'
), 0);
$eventManager->attach(MvcEvent::EVENT_RENDER_ERROR, array(
$this,
'onRenderError'
), 0);
}
public function onDispatchError($e)
{
return $this->getJsonModelError($e);
}
public function onRenderError($e)
{
return $this->getJsonModelError($e);
}
/*
* Manages error's and return response_code and error message
*
* @return Zend\View\Model\JsonModel
*/
public function getJsonModelError($e)
{
$error = $e->getError();
if (! $error) {
return;
}
$response = $e->getResponse();
$sm = StaticServiceManager::getDefaultServiceManager();
$config = $sm->get('config');
$err_code = $response->getStatusCode();
$err_msg = $response->getReasonPhrase();
$response_code = $config['HTTP_ERROR'][$err_code]['response_code'];
$errorJson = array(
'response_code' => $response_code,
// 'status' => $err_code,
'message' => $err_msg
);
$model = new JsonModel($errorJson);
$e->setResult($model);
return $model;
}
然而,仍然存在这种方法无法跟踪的情况。对于例如传递的HTTP方法无效。有什么方法可以检查最终答案并操纵它,例如我可以查看最终回复内容类型& http状态代码最终改变响应发送一些意义的完整json消息。