2011-05-06 104 views
0

我是CakePHP的新手。覆蓋模型驗證錯誤

我想使用模型驗證機制,但我很難覆蓋顯示的錯誤。我正在構建一個API,其中所有視圖都需要以JSON呈現,並且我有一個JSON格式,所有錯誤都需要輸出。我定義了一個自定義的AppError類,並且我已經成功地能夠以這種格式定義自定義錯誤。

有沒有辦法使用AppError類來覆蓋來自驗證的錯誤消息的輸出?

謝謝。

回答

1

我想出了一個解決方案中加入這些方法我AppModel類:

function validates($options = array()) { 
    $result = parent::validates($options); 
    if (!$result) { 
     $this->_validateErrors(); 
    } 

    return $result; 
} 

function _validateErrors() { 
    foreach ($this->validationErrors as $code) { 
      $this->cakeError('apiError', array('code' => $code)); // Custom JSON error. 
      return; 
    } 
} 

我然後手動調用$這個 - >型號 - >驗證()模型前::保存( )在我的控制器中調用。這似乎運作良好。

0

據我所知,沒有直接的方法來從您的AppError類中獲取驗證錯誤。解決方法是在app/app_model.php中創建AppModel類,並使用onError()回調方法將錯誤傳遞給AppError類。

// app/app_model.php 
class AppModel extends Model { 

    public function onError() { 
     // Pass the errors to your AppError class 
     AppError::someErrorMethod($this->getErrors()); 
    } 

} 
+0

我無法得到這個在我的情況下工作。看到我現在使用的解決方案的答案,但我不確定是否有更好的方法。 – 2011-05-23 17:22:58