Baby step - 思考と実験の足跡

日常のちょっとした、気になって試したこと集です。

モデルで定義したバリデーションが動いているか確認する

背景

バリデーションが設定どおり動作するか確認する方法を調べてみました。

モデル側にバリエーションを設定

# 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だとこちら

設定する部分 バリデータの組み合わせ

取得する部分 テーブルからのバリデータ取得