チュートリアル - 入力データのチェック
2007年9月11日現在、最新の CakePHP 安定版では、入力チェックとして正規表現を用いることができます。
正規表現とは文字列のパターンを示す記号の集まりで、たとえば4桁の数字は /[0-9][0-9][0-9][0-9]/ と表現します。
しかし、正規表現は視認性に疑問が残るため CakePHP では定数によってよく使う入力チェックのパターンが用意されています。
- VALID_NOT_EMPTY
入力データは必須入力である。 - VALID_NUMBER
入力データは数値でなければならない。 - VALID_EMAIL
入力データはEメールアドレスでなければならない。 - VALID_YEAR
入力データは年数でなければならない。
入力チェックを WEB システムに反映させるには、モデルの var $validate という配列に対象のフィールドと正規表現(もしくは前述の定数)を記述します。
ブックマークリストの例ではサイト名と URL が必須入力ですので次のようになります。
/app/models/bookmark.php
class Bookmark extends AppModel { var $name = 'Bookmark'; var $displayField = 'site_name'; var $validate = array('site_name' => VALID_NOT_EMPTY, 'url' => VALID_NOT_EMPTY); var $hasMany = array('Evaluation' => array('className' => 'Evaluation')); }
評価モデルに関しても、投稿者と評価の本文が必須入力ですので次のようになります。
/app/models/evaluation.php
class Evaluation extends AppModel { var $name = 'Evaluation'; var $validate = array('bookmark_id' => VALID_NUMBER, 'name' => VALID_NOT_EMPTY, 'comment' => VALID_NOT_EMPTY); var $belongsTo = array('Bookmark' => array('className' => 'Bookmark')); }
設定後、必須項目が未入力の場合エラーメッセージが出力されるようになり、入力チェックをパスしない限り先へ進めなくなります。
« 「チュートリアル - ブックマークに評価をつける」へ | トップへ | 上の階層へ | 「チュートリアル - scaffolding からソースコードへ」へ »