cakephpで一度、register上で、validateを実行し、
その後、loginで同じカラム名で違う条件でvalidateを実行したいのですが、
どうすればよろしいでしょうか。
また、なぜか、validateがfalseにもかかわらずログインした際エラーメッセージも表示されない状況です。
cakephp2.9
コントローラ
php
1public function login(){ 2 debug($this->User->validates()); 3 if($this->request->is('post')) { 4 if(!empty($this->data)){ 5 6 if($this->Auth->login()){ 7 $this->redirect(array('action'=>'index',$this->Auth->user('username')));} 8 //else 9 // $this->Session->write('errors.Comment',$this->User->validationErrors); 10 //$this->User->create(); 11 $this->Session->setFlash('ユーザー名、パスワードの組み合わせが違うようです。'); 12 }} 13 }
ビュー
php
1<?php 2 3 echo $this->Form->create('User'); 4 echo $this->Form->input('user_in',array('label' => 'ユーザーID','type' => 'text','required' => false)); 5 echo $this->Form->input('password_in',array('label' => 'パスワード','type' => 'password','required' => false)); 6 echo $this->Session->flash(); 7 echo $this->Form->submit('ログイン'); 8 echo $this->Form->end(); 9 ?>
validate
一部抜粋
php
1public $validate = array( 2 'name' => array( 3 'rule1'=>array( 4 'rule' => 'notBlank', 5 'message' => '名前を入力してください。' 6 ), 7 'rule2'=>array( 8 'rule' => 'usernamerule', 9 'message' => '名前は全角、半角英数字または「_」「-」で入力して下さい。', 10 ), 11 'rule3'=>array( 12 'rule' => array('between',4,20), //4~20文字 13 'message' => '名前は4文字以上20文字以内にしてください。', 14 ) 15 ), 16 'username' => array( 17 'rule4'=>array( 18 'rule' => 'notBlank', 19 'message' => 'ユーザー名を入力してください。', 20 ), 21 'rule5'=>array( 22 'rule' => array('isUnique'), //重複禁止 23 'message' => '既に使用されているユーザー名です。', 24 ), 25 'rule7'=>array( 26 'rule' => array('between', 4, 20), //4~20文字 27 'message' => 'ユーザー名は4文字以上20文字以内にしてください。', 28 )), 29 'password' => array( 30 'rule8'=>array( 31 'rule' => 'notBlank', 32 'message' => 'パスワードを入力してください。' 33 ), 34 'rule9'=>array( 35 'rule' => 'alphaNumeric', 36 'message' => 'パスワードは半角英数字にしてください。', 37 ), 38 'rule10'=>array( 39 'rule' => array('between', 4, 8), 40 'message' => 'パスワードは4文字以上8文字以内にしてください。', 41 )), 42 'password_2' => array( 43 'rule11'=>array( 44 'rule' => 'notBlank', 45 'message' => 'もう一度パスワードを記入してください。' 46 ), 47 'rule12'=>array( 48 'rule' => 'passwordConfirm', 49 'message' => 'パスワードが一致していません', 50 )),} 51
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/10 05:26
2016/10/10 05:31
2016/10/10 09:11
2016/10/10 09:21
2016/10/10 09:28