モデルで定義したバリデーションが動いているか確認する
背景
バリデーションが設定どおり動作するか確認する方法を調べてみました。
モデル側にバリエーションを設定
# Model public function validationBase(Validator $validator) { $validator ->nonNegativeInteger('id') ->allowEmpty('id', 'create'); $validator ->dateTime('created_at'); $validator ->dateTime('updated_at'); $validator ->dateTime('deleted_at') ->allowEmpty('deleted_at'); return $validator; }
バリデーションの内容は以下で取得できる。
$defaultValidator = $table->getValidator('base');
debugしてみる
# debug.log ########################### /src/[Controller名].php (line xx) ########## DEBUG ########## object(Cake\Validation\Validator) { '_presenceMessages' => [], '_allowEmptyMessages' => [], '_allowEmptyFlags' => [], '_useI18n' => true, '_providers' => [ (int) 0 => 'table' ], '_fields' => [ 'id' => [ 'isPresenceRequired' => false, 'isEmptyAllowed' => 'create', 'rules' => [ (int) 0 => 'nonNegativeInteger' ] ], 'created_at' => [ 'isPresenceRequired' => false, 'isEmptyAllowed' => false, 'rules' => [ (int) 0 => 'dateTime' (中略)
これで思った通りのバリデーションが設定されてるか確認できる!
参考文献
CookBookだとこちら
設定する部分 バリデータの組み合わせ
取得する部分 テーブルからのバリデータ取得