会員登録の画面でよく「規約に同意する」チェックボックスにチェックしないと登録できないみたいなUIがありますよね。
こんな感じで。↓

これをcakePHP2.8のvalidateで実装するにあたって、少しつまづいてしまったので解決方法をメモがてら紹介します。
結論から言うと、これでOKです。
‘consentFlag’ => [
‘rule’ => [‘comparison’, ‘==’, 1],
‘message’ => ‘利用規約にご同意ください’
],
consentFlagは値のキーが入るので任意にしてもらって構いません。
で、ruleの”comparison””と言うのがcakephpにもともとあるバリデーションルールで、数値を比較するもの。
要は「“consentFlag == 1”、つまりconsentFlagがチェックされてないとダメだよー」って言うバリデーションです。
https://book.cakephp.org/2.0/ja/models/data-validation.html#Validation::comparison
NG例
ずーっと
‘consentFlag’ => [
‘allowEmpty’ => false
‘rule’ => “notBlank””,
‘message’ => ‘利用規約にご同意ください’
]
てな感じでやっていましたが、これはNGですね。「0」がnotBlankを通過する仕様になっているようです。
フレームワークは便利ですが、つまづいた時に応用できるように細かいところを見る勇気は大事です・・・。
https://www.suzuco.net/entry/programming-school/