Zend Framework 2 AbstractRestfulController - 例外为JSON

时间:2013-03-17 17:54:50

标签: php zend-framework2

我的目标是获得像

这样的JSON
{ 
  "meta": { 
    "error_type": "error type", 
    "code": 400, 
    "error_message": "error msg" 
  } 
}

如果出现问题。 我试图将try catch块放在其余控制器的动作和模型中,但我得到了整个异常堆栈(我的意思是布局+视图)

什么是正确的方式?

2 个答案:

答案 0 :(得分:0)

在控制器操作中捕获异常。

从包含异常信息的操作返回JsonModel:

public function someAction()
{
    try {
        throw new Exception();
    }
    catch (Exception $e) {
        return new JsonModel(array(
            'meta' => array(
                'code'          => $e->getCode(),
                'error_message' => $e->getMessage(),
                //...
            )
        ));
    }
    //...
}

来源:Returning JSON from a ZF2 controller action

答案 1 :(得分:0)

  

[我试图将try catch块放在动作休息中   控制器]

我刚尝试过 (我希望我的目标成真,但是 什么时候出现问题:))

public function create($data) 
{ 
        try{ 
    $artist = $this->getRequest()->getPost('artist', null); 
        $title = $this->getRequest()->getPost('title', null); 
        $album = new Album(); 
        $album->exchangeArray(array('artist'=>$artist,'title'=>$title)); 
        $id = $this->getAlbumTable()->saveAlbum($album); 
        return $this->get($id);   
     } 
     catch (Exception $e) { 
      return new JsonModel(array( 
                'meta' =>array( 
                    'code'=>500, 
                    'error-num'=>$e->getCode(), 
                    'error-msg'=>$e->getMessage(), 
                ) 
            )); 
        } 

 }

但如上所述它不起作用 而不是json数据我得到了 整个默认的异常堆栈与布局。