5

新しいバリデーターオブジェクトを使用して-トリガーされた検証ルール内の検証エラーを置き換えることは可能ですか?静的なエラーメッセージを返すだけでなく、動的に生成されたメッセージを返すこともできますか?

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配列から常に前の(静的)エラーメッセージを返します

4

2 に答える 2

9
public function customValidator($data) {
    ....
    if ($validates) {
        return true;
    } else { 
        return 'my new error message';
    }
}
于 2012-07-16T12:54:39.340 に答える
2

次のスニペットでうまくいくはずです。

public function validateLength($data) {
    ...
    $length = mb_strlen($data['name']);
    $this->validator()->getField('name')->getRule('validateLength')->message = $length . 'chars';
    ...
}
于 2012-07-16T05:19:42.343 に答える