CakePHP json / xml错误视图

时间:2014-09-08 19:54:16

标签: json rest cakephp

我目前正在使用cakephp构建REST api。 基本上当我向例如add.json发送请求等时,它将获取输入数据并向我提供json数据,同样如果我将它发送到add.xml,它将给我一个xml响应。

但是,如果在发出此请求(例如外键约束)时出现问题,则响应是包含错误的HTML页面。是否有可能出现错误的json / xml视图?

同样在cakephp验证中,可以在验证过程中执行外键检查吗?

1 个答案:

答案 0 :(得分:1)

好的,所以我设法解决了这个问题。

首先,我更改了我的app / Config / core.php文件以更改异常渲染器。

Configure::write('Exception', array(
    'handler' => 'ErrorHandler::handleException',
    'renderer' => 'RESTExceptionRenderer',
    'log' => true
));

然后我在app / Lib / Error中创建了RESTExceptionRenderer.php。     App :: uses('ExceptionRenderer','Error');

class RESTExceptionRenderer extends ExceptionRenderer {

    protected function _outputMessage($template) {
        /*Check if we are an json or xml request*/
        if( $this->controller->request->params['ext'] === 'json' ){
            $this->controller->layout = null;
            echo parent::_outputMessage( "ajax/" . $template );
        } else if( $this->controller->request->params['ext'] === 'xml' ) {
            $this->controller->layout = null;
            echo parent::_outputMessage( "xml/" . $template );
        } else {
            parent::_outputMessage($template);
        }
    }

}

这种方式如果有人访问index.json等并抛出异常,则会在json而不是html中返回错误。