CakePHP 1.2 を使用ã—ã¦ãƒ•ォームを作æˆã—ã¦ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’使用ã—ãŸãƒ¡ãƒ¢ã§ã™ã€‚
下記サイトをå‚考ã«ã•ã›ã¦ã„ãŸã ãã¾ã—ãŸã€‚
cakePHP 1.2ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ç†è§£ã™ã‚‹ – cakephp – クãƒã‚¢ãƒã‚¢ã§åƒãプãƒã‚°ãƒ©ãƒžãƒ¼æ—¥è¨˜
例ã¨ã—ã¦ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’2回入力ã•ã›ã‚‹ãƒ•ォームを考ãˆã¦è¦‹ã¾ã™ã€‚
ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ«ãƒ¼ãƒ«ã¨ã—ã¦
- å¿…é ˆé …ç›®
- メールアドレスã¨ã—ã¦æ£ã—ã„
- メールアドレスãŒãƒ¦ãƒ‹ãƒ¼ã‚¯
- 2回入力ã—ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒä¸€è‡´ã™ã‚‹
モデルã«ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’定義ã™ã‚‹
var $validate = array(
'email' => array(
'unique' => array(
'rule' => array('checkUnique', 'email'),
'message' => 'ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯æ—¢ã«ç™»éŒ²ã•れã¦ã„ã¾ã™'
),
'rule1' => array(
'rule' => array('email'),
'message'=>'ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ£ã—ãã‚りã¾ã›ã‚“'
),
'required' => array(
'rule'=>VALID_NOT_EMPTY ,
'message' => 'å¿…é ˆé …ç›®ã§ã™'
),
),
'email_confirm' => array(
'rule1' => array(
'rule'=> array('checkCompare'),
'message'=>'一致ã—ã¾ã›ã‚“'
),
),
);
ç§ã¯ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³å®šç¾©ã«ã¾ã¨ã‚ã¦ãŠããŸã„ã®ã§ã€ä¸Šè¨˜ã®ã‚ˆã†ã«å„ルールã«
'message' => 'エラーメッセージ'
ã¨ã—ã¦å®šç¾©ã—ã¦ã„ã¾ã™ã€‚
ã“ã“ã§å®šç¾©ã—ã¦ãŠã‘ã°ã€å¾Œã§ãƒ“ãƒ¥ãƒ¼ã«æ›¸ãフォームヘルパーã§ãƒ•ォームを出力ã™ã‚‹ã¨ãã«å¼•ã£ã‹ã‹ã£ãŸã‚¨ãƒ©ãƒ¼ã‚’自動的ã«å‡ºåŠ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã¾ãŸã€è‡ªåˆ†ã§ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³é–¢æ•°ã‚’作æˆã—ã¦ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ãれ㌠checkUnique 㨠checkCompare ã§ã™ã€‚
メールã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãƒã‚§ãƒƒã‚¯ã¯å‚考サイトをå‚考ã«ã•ã›ã¦ã„ãŸã ãã¾ã—ãŸã€‚
function checkUnique($field){
foreach( $field as $key => $value ){
$this->recursive = -1;
$found = $this->find(array("{$this->name}.$key" => $value));
return !$found;
}
}
次ã«ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’2回入れãŸã‚‚ã®ãŒä¸€è‡´ã™ã‚‹ã‹ã®ãƒã‚§ãƒƒã‚¯ã§ã™ã€‚
ã“れã¯ãƒ‘スワードãªã©ã§ã‚‚ãŸã¾ã«ä½¿ç”¨ã™ã‚‹ã®ã§æ±Žç”¨æ€§ã‚’æŒãŸã›ã¦ã‚りã¾ã™ã€‚
例ãˆã°ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒ•ィールドå㌠email ã®å ´åˆã€ç¢ºèªç”¨ã®ãƒ•ィールドå㯠‘_confirm’を付ã‘㦠email_confirm ã¨ã—ã¦ãŠã‘ã°ã“ã®2ã¤ãŒä¸€è‡´ã™ã‚‹ã‹ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚
function checkCompare($field) {
foreach( $field as $key => $value ){
if (preg_match('/^(.+)_confirm$/', $key, $regs)) {
return $this->data[$this->name][$regs[1]] == $this->data[$this->name][$key];
}
}
}
ビューã§ãƒ•ォームをè¨å®š
<?php echo $form->input('User/email', array('type'=>'text')); ?>
<?php echo $form->input('User/email_confirm', array('type'=>'text')); ?>
ã“ã®ã‚ˆã†ã«æ›¸ã„ã¦ãŠã‘ã°ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚‹å ´åˆã¯ã€ãƒ¢ãƒ‡ãƒ«ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã«å®šç¾©ã—ãŸã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’自動的ã«å‡ºåŠ›ã—ã¦ãれã¾ã™ã€‚
ã¡ãªã¿ã«ä¸Šè¨˜ã®ã‚ˆã†ã«æ›¸ã㨠input ã‚¿ã‚°ã®å‰ã« email ãªã©ã®ãƒ•ィールドåãŒå‡ºåŠ›ã•れã¾ã™ã€‚ã“れを消ã—ãŸã„å ´åˆã¯
<?php echo $form->input('User/email', array('type'=>'text', 'label'=>'')); ?>
ã¨æ›¸ãã¨è¡¨ç¤ºã•れãªããªã‚Šã¾ã™ã€‚
追記:
ã‚³ãƒ¡ãƒ³ãƒˆã§æ•™ãˆã¦ã„ãŸã ãã¾ã—ãŸã€‚label=>” ã ã¨è¡¨ç¤ºã•れãªã„ãŒã€label ã‚¿ã‚°ã¯æ®‹ã‚‹ã®ã§
<?php echo $form->input('User/email', array('type'=>'text', 'label'=>false)); ?>
ã¨ã™ã‚‹ã¨ãƒ©ãƒ™ãƒ«ã‚¿ã‚°ã‚‚出力ã•れãªããªã‚Šã¾ã™ã€‚
コントãƒãƒ¼ãƒ©ã§ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯
以下ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
function action() {
if ($this->data) {
if ($this->User->create($this->data) && $this->User->validates()) {
// ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³OK
}
}
}
ä»–ã«ã‚‚ã„ã‚ã„ã‚フォーム気ãŒã¤ã„ãŸç‚¹ãŒã‚ã£ãŸã®ã§ãれã¯ã¾ãŸå¾Œã§ã¾ã¨ã‚ã¾ã™ã€‚
Recent Comments