2008/10/1 水曜日

CakePHP1.2でvalidation

カテゴリー: CakePHP — benton @ 18:05:58

CakePHP1.2でフォーム入力値のvalidation。

モデルの$validateに検証ルールを設定しておいて、エラーの場合そのエラーに対応する文字列をビューで出そうと思ったんですが、かなり苦戦しました。本やサイトに書いてあることをやってもどうもうまくいかない。

試行錯誤の末、こんな感じでうまくいくことがわかりました。

modelの$validateで検証ルール(複数)を設定。

var $validate = array(
‘login_id’ => array(
‘rule1′ => array(
‘rule’ => ‘alphaNumeric’, // 英数字のみ
‘on’ => null, // 検証ルールを常時実行
‘message’ => ‘ログインIDは英数字のみで入力してください。’ // エラーメッセージ
),
‘rule2′ => array(
‘rule’ => array(’minLength’, 4),
‘on’ => null,
‘message’ => ‘ログインIDは4文字以上で入力してください。’
),
‘rule3′ => array(
‘rule’ => array(’maxLength’, 16),
‘on’ => null,
‘message’ => ‘ログインIDは16文字以下で入力してください。’
),
‘rule4′ => array(
‘rule’ => VALID_NOT_EMPTY,
‘on’ => null,
‘message’ => ‘ログインIDを入力してください。’
)
)
);

controllerでvalidateErrorsを使う。

// Userモデルのvalidationチェック
$this->User->set($this->data);
$errors = $this->validateErrors($this->User);
// エラーがあればログイン画面へ
if (!empty($errors)) {
$this->render(”login”);
return;
}

viewで$form->errorを使う。

echo $form->text(”User.login_id”);
echo $form->error(”User.login_id”);

HTML convert time: 0.335 sec. Powered by WordPress ME