我是CakePHP的新手。
我想使用模型验证机制,但是我无法覆盖显示的错误。我正在构建一个API,其中所有视图都需要以JSON呈现,并且我有一个JSON格式,所有错误都需要输出为。我已经定义了一个自定义AppError类,我已经成功地能够以这种格式定义自定义错误。
有没有办法使用AppError类来覆盖来自验证的错误消息的输出?
感谢。
答案 0 :(得分: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;
}
}
然后我在控制器中的Model :: save()调用之前手动调用$ this-> Model-> validates()。这似乎运作良好。
答案 1 :(得分: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());
}
}