required と allowEmpty の違い

CakePHP 1.2 からは新しい入力値の検証機構が搭載されていますが、 required と allowEmpty という二律背反的な設定項目があります。

required は「その項目の存在を必須とするか?」の設定で、 allowEmpty は「空の値を許容するか?」の設定です。これを組み合わせると「保存に際して必要ではないけど、保存するなら空の値は許さないよ」というフィールドを作ることができます。たとえばパスワードなんかはこの例に当てはまると思います。これを実現するためには次のように書きます。

<?php
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 と設定しても同じようなことができます。

トップへ  |  上の階層へ

トップページへ戻る / 前のページへ戻る

back to top