CakePHP(v3.x)、BuildRulesを追加する。

Articleというモデルが存在するときに、Bakeしたあとに生成されるArticlesTable.phpファイル内に存在するBuildRulesにルールを追加することが出来ます。 デフォルトではモデルの関係性などに応じていくつかここにルールが追加されていますが、ユーザで独自に追加することが出来ます。

今回はArticlesにおけるpublishe_dateという記事の発行年月を保持するレコードには、現在より過去の日付が入力されなければならないという制約を追加したい場合について書きます。

    public function buildRules(RulesChecker $rules)
    {


        // 新規追加部分
        $rules->addUpdate(
            function ($entity, $options){
                return $entity->publish_date->isPast();
            },
            'publish_date_consistency',
            [
                'errorField' => 'publish_date',
                'message' => '未来の発行年月が選択されています'
            ]
        );


    }

errorFieldでエラーを表示するフィールド、messageに表画面に表示するメッセージを追加することが出来ます。