いいえ、コンポーネントはモデル用ではありません。カスタム検証ルールに対して行うことは、AppModel にメソッドを追加することです。次に、モデルの任意の検証配列でそれらを使用できます。
カスタム検証メソッドの使用方法がわからない場合は、Cake book のセクションを参照してください。
http://book.cakephp.org/2.0/en/models/data-validation.html#adding-your-own-validation-methods
ただし、必要な各モデルにメソッドを配置する代わりに、代わりに AppModel に配置します (AppModel クラスがない場合は、以下のように作成して に保存しapp/Model/AppModel.php
ます。すべてのモデルはこのクラスを継承するため、カスタム検証メソッドは、どのモデルでも使用できます。)
簡単な例を次に示します。
/**
* app/Model/AppModel.php
*/
class AppModel extends Model {
/**
* Validation rule for integers
*
* @param mixed $value
* @return bool
*/
public function validateInteger($value) {
return preg_match('/^\d+$/', array_shift($value));
}
}
/**
* app/Model/MyModel.php
*/
class MyModel extends AppModel {
/**
* Validation
*
* @var array
*/
public $validate = array(
'my_field' => array(
'rule' => 'validateInteger',
'message' => 'This field only accepts integers'
)
);
}
また、これらすべての検証メソッドを含むカスタム検証動作を用意するというアイデアも考えましたが、動作の制限により、特にうまく機能せず、便利ではないことがわかりました。