我是CakePHP的新手。覆蓋模型驗證錯誤
我想使用模型驗證機制,但我很難覆蓋顯示的錯誤。我正在構建一個API,其中所有視圖都需要以JSON呈現,並且我有一個JSON格式,所有錯誤都需要輸出。我定義了一個自定義的AppError類,並且我已經成功地能夠以這種格式定義自定義錯誤。
有沒有辦法使用AppError類來覆蓋來自驗證的錯誤消息的輸出?
謝謝。
我是CakePHP的新手。覆蓋模型驗證錯誤
我想使用模型驗證機制,但我很難覆蓋顯示的錯誤。我正在構建一個API,其中所有視圖都需要以JSON呈現,並且我有一個JSON格式,所有錯誤都需要輸出。我定義了一個自定義的AppError類,並且我已經成功地能夠以這種格式定義自定義錯誤。
有沒有辦法使用AppError類來覆蓋來自驗證的錯誤消息的輸出?
謝謝。
我想出了一個解決方案中加入這些方法我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;
}
}
我然後手動調用$這個 - >型號 - >驗證()模型前::保存( )在我的控制器中調用。這似乎運作良好。
據我所知,沒有直接的方法來從您的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());
}
}
我無法得到這個在我的情況下工作。看到我現在使用的解決方案的答案,但我不確定是否有更好的方法。 – 2011-05-23 17:22:58