在ZF2中操纵响应

时间:2016-05-27 13:21:06

标签: php zend-framework2 httpresponse

我正在使用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消息。

0 个答案:

没有答案