CakePHPを使用していて、以前からわかっているようで、わかっていないような気がすることがありました。それはバリデーションルールにあるallowEmptyとrequiredです。
これって、わかるようでわかりにくい内容で、それをまとめたサイトもあるのですが、それを読んでもどうもシックリ来なかったりします。そこで、下記に自分用にまとめてみました。ちなみにCakePHPのバージョンは1.3です。
英語での意味
まず、それぞれの英語の意味を明記しておきます。
- allowEmpty
- 空を許す、空を許可する
- required
- 要する、必要とする、命じる、要求する
まあ、わざわざ書かなくてもわかることでしょうが、書いておいた方が何となく優しかったりしますので。
Cakebookだと
それではそれぞれをCakePHPのドキュメントであるCakebookで見てみると
- allowEmpty
- デフォルトはNull。つまり常にバリデーションルールが適用される。
false → フィールドが存在しその値が空で無いこと。
true → 空のフィールドは他に設定された全てのバリデーションを無視。 - required
- 送られたデータにキーが存在し、値が空の場合は、バリデーションは成功します。「required」を true にすると、キーの存在だけを検証します。
デフォルトはfalse。
true:フィールドはデータの配列中に存在しなければならない。
これだけを見てわかる人はわかりますが、わからない人はわからないですよね。
自分なりにまとめてみる前の前提条件
上記のことを踏まえて、自分なりにまとめてみようと思いますが、その前にチェックするデータ形式などを決めておきましょう。チェックするデータは下記のようなUserモデルにあるnameフィールドに「俺だよ俺」という値が入っているものとします。
$this->data[‘User’][‘name’] = ‘俺だよ俺’;
allowEmptyとは
さて、まずはallowEmptyです。allowEmptyは英訳したとおり「空を許可するか」です。でも、これはただ単純に「俺だよ俺」が入っているかではありません。Cakebookのfalseに「フィールドが存在し・・・」がキーポイントです。簡単に一文で書くと$this->data[‘User’]で「name」フィールドがあって(存在して)、「俺だよ俺」などの値が入っていること。がallowEmptyのfalseでチェックします。ちょっとややこしいですかね。簡単にわかるように表にしてみましょう。
フィールド | 値 | allowEmpty | |
---|---|---|---|
True | False | ||
有り | 有り | OK | OK |
無し | OK | Error | |
無し | 無し | OK | OK |
表内の「OK」はバリデーションに引っ掛からないという意味で、「Error」はバリデーションに引っ掛かると言うことです。わかるかな?
requiredとは
次にrequiredなんですが、英訳からすると「必須」かどうかなんですが、これもちょっとややこしく値が必須じゃなく、フィールドが必須かどうかということなんです。つまり$this->data[‘User’]に「name」のキーが存在するかどうかをチェックしているのです。同じく表で書くと下記のようになります。
フィールド | 値 | required | |
---|---|---|---|
True | False | ||
有り | 有り | OK | OK |
無し | OK | OK | |
無し | 無し | Error | OK |
簡単にまとめると
どうでしょうかね?わかりますか?とにかくややこしいですよね。とにかく簡単にまとめると
- allowEmpty
- フィールドがある場合に値の有無をチェック
- required
- フィールドの有無をチェック
といった感じでしょうか?これであっているかな・・・。何か書いているうちに自信がなくなってきた( ̄ー ̄;
- 投稿タグ
- allowEmpty, CakePHP, required, バリデーション
Pingback: 初めての[CakePHP2.x]での開発、そして挫折するまで日記~その22 バリデーションの書き方 | 日々の覚書…日常のことも少しだけ