required と allowEmpty の違い
CakePHP 1.2 からは新しい入力値の検証機構が搭載されていますが、 required と allowEmpty という二律背反的な設定項目があります。
required は「その項目の存在を必須とするか?」の設定で、 allowEmpty は「空の値を許容するか?」の設定です。これを組み合わせると「保存に際して必要ではないけど、保存するなら空の値は許さないよ」というフィールドを作ることができます。たとえばパスワードなんかはこの例に当てはまると思います。これを実現するためには次のように書きます。
class User extends AppModel { var $name = "User"; var $validate = array("user_id" => array(array("rule" => array("minLength", 4), "required" => true, "allowEmpty" => false)), "password" => array(array("rule" => array("minLength", 8)), "required" => false, "allowEmpty" => false)); }
この場合、 user_id は required が true なので、いかなる場合も user_id のフィールドが存在している必要がありますが、 password のフィールドはなくても保存することができるようになります。ただし、 password のフィールドを用意した場合は値を入力しなければなりません。
ちなみに password の on に create と設定しても同じようなことができます。