簡體   English   中英

Zend Framework 2 AbstractRestfulController-JSON例外

[英]Zend Framework 2 AbstractRestfulController - Exceptions as JSON

我的目標是得到一個像

{ 
  "meta": { 
    "error_type": "error type", 
    "code": 400, 
    "error_message": "error msg" 
  } 
}

萬一出問題了。 我試圖將try catch塊放入其余控制器的動作和模型中,但得到了整個異常堆棧(我的意思是layout + view)

什么是正確的方法?

在控制器操作中捕獲異常。

從包含異常信息的操作中返回JsonModel:

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

來源: 從ZF2控制器操作返回JSON

[我試圖將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數據工作,但我得到了帶有布局的整個默認異常堆棧。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM