3

必要に応じてアプリケーション全体で再利用できるカスタム検証ルールを追加したいと考えています。どこに置くのがベスト?

それらをAppModelに入れることができることはわかっていますが、それは面倒で、検証のためにたまにしか使用されないメソッドでAppModelを汚染/肥大化させます.他のメソッドから明確に整理するために、それらすべてに , などvalidateUsernameのプレフィックスを付ける必要があることがわかりました. validateCustomAppModel で。OOP構造でこれを行うより良い方法があるように感じます。

Libたとえば、カスタム ルールをクラスの静的メソッドとして指定する方法はありますか?

例えば

app/Lib/Validate.php

class Validate {

    public function username($value) {
        $value = array_shift($value);
        return preg_match('/^[A-Z0-9_-]+$/i', $value);
    }
}

そして、次の必要がある場合にのみ、モデルでルールを使用します。

アプリ/モデル/MyModel.php

App::uses('Validate', 'Lib');

class MyModel extends AppModel {

    public $validate = array(
        'username' => array(
            'rule' => 'Validate::username',
            'message' => 'Username contains invalid characters'
        )
    );
}
4

1 に答える 1