CakePHP3で正規表現を使ったカスタムバリデーションをする方法

CakePHP3で正規表現を使ったカスタムバリデーションをする方法

8 回閲覧されました

みなさんこんにちは、jonioです。

モデルでカスタムバリデーションをかけたのですがうまくいかずやっとの思いで実装できたのでメモとしてこの記事を残します。

CakePHPのバージョン

3.6で動作確認しています。

〜Table.php

下記の記述をします。

$validator
    ->scalar('demo_column')
    ->requirePresence('demo_column', 'true')
    ->notEmpty('demo_column')
    ->add('demo_column', 'customFormat', [
        'rule' => function ($value, $context) {
            return preg_match('/^\d{2}:\d{2}$/', $value) == 1;
        }
]);

ポイントは7行目の「== 1」でこれを記述しないといけないです。

これがないと必ずバリデーションエラーになります。