CakePHP で Table の Validator を差し替える #cakephp
以前 Validation をカスタムしやすくする方法を書いた。
Validation は bootstrap.php で差し替えればいいんだけれど、じゃあ自前で呼ばない Table の Validator を差し替えるにはどうしたらいいのか。
Table での Validation
Table クラスでの既定のバリデーションは、 validationDefault()
で行われる。
インターフェースとしては Validator を引数で受け取る形になっており、ここを差し替えたい。
<?php public function validationDefault(Validator $validator) { $validator ->requirePresence('title', 'create') ->notEmpty('title'); ... return $validator; }
initialize で書き換えればよい
Table クラスの initialize で、 _validatorClass
を差し替えてあげればよさそう。
<?php public function initialize(array $config): void { $this->_validatorClass = MyValidator::class;; }
ドキュメントにもちゃんと書いてあった。
https://book.cakephp.org/4/en/orm/validation.html#default-validator-class
横断的に差し替えたいとなったら、基底クラス用意するのがいいのかなー。