必要に応じてアプリケーション全体で再利用できるカスタム検証ルールを追加したいと考えています。どこに置くのがベスト?
それらをAppModelに入れることができることはわかっていますが、それは面倒で、検証のためにたまにしか使用されないメソッドでAppModelを汚染/肥大化させます.他のメソッドから明確に整理するために、それらすべてに , などvalidateUsername
のプレフィックスを付ける必要があることがわかりました. validateCustom
AppModel で。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'
)
);
}