在验证时动态切换错误消息?

时间:2012-07-15 19:12:54

标签: validation cakephp cakephp-2.1

使用新的验证器对象 - 是否可以替换触发的验证规则中的验证错误?不仅要返回静态错误消息,还有一些动态生成的消息?

public function validateLength($data) {
    ...
    $length = mb_strlen($data['name']);
    $this->validator()->getField('name')->setRule('validateLength', array('message' => $length . 'chars')); 
    ...
}

当然不起作用(我猜太晚了)

我想实际返回字符串的长度(例如,你从100允许使用了111个字符) - 但为此我需要能够从(自定义)验证方法中替换消息

$this->validate['name']['validateLength']['message'] = $length . 'chars';
到目前为止,也从来没有工作过。它总是返回$ validate数组中的前一个(静态)错误消息

2 个答案:

答案 0 :(得分:9)

public function customValidator($data) {
    ....
    if ($validates) {
        return true;
    } else { 
        return 'my new error message';
    }
}

答案 1 :(得分:2)

以下代码段可以解决这个问题:

public function validateLength($data) {
    ...
    $length = mb_strlen($data['name']);
    $this->validator()->getField('name')->getRule('validateLength')->message = $length . 'chars';
    ...
}
相关问题