Reputation: 574
in my project i have two form(Login and Registration) in login from email and password and registration form have username,email and password i press login button then validation username required message is active in form
my Question is how to validate 2 form in single view and single model my validation text is like,
public $validate=array(
'email' => array(
'rule'=>'email',
'message'=>'The email field is not currect',
),
'password' =>array(
'rule'=>array('minLength','8'),
'required' => true,
'message'=>'minume 8 charecter long',
'required'=>true,
),
'user_name'=>array(
'rule'=>'notEmpty',
'required'=>true,
'message'=>'user Name is require',
),
);
Upvotes: 2
Views: 335
Reputation: 31
You could create validation rules for login, but it does defeat the purpose of the built in Auth component.
Better use of your time would be create validation rules per function for registration form and perhaps a change user password form...
For example create a function in the User model to validate user registrations and users changing their passwords:
public function registerValidate() {
$validate1 = array(
'username' => array(
'mustNotEmpty'=>array(
'rule' => 'notEmpty',
'message'=> 'Please enter a username',
'last'=>true),
'mustUnique'=>array(
'rule' =>'isUnique',
'message' =>'That username is already taken',)
),
'email'=> array(
'mustNotEmpty'=>array(
'rule' => 'notEmpty',
'message'=> 'Please enter email',
'last'=>true),
'mustBeEmail'=> array(
'rule' => array('email'),
'message' => 'Please enter valid email',
'last'=>true),
'mustUnique'=>array(
'rule' =>'isUnique',
'message' =>'This email is already registered',)
),
'password'=>array(
'mustNotEmpty'=>array(
'rule' => 'notEmpty',
'message'=> 'Please enter password',
'on' => 'create',
'last'=>true),
'mustBeLonger'=>array(
'rule' => array('minLength', 6),
'message'=> 'Password must be greater than 5 characters',
'on' => 'create',
'last'=>true),
'mustMatch'=>array(
'rule' => array('verifies'),
'message' => 'Both passwords must match'),
)
);
$this->validate = $validate1;
return $this->validates();
}
public function changePassword() {
$validate1 = array(
'password'=>array(
'mustNotEmpty'=>array(
'rule' => 'notEmpty',
'message'=> 'Please enter your password',
'on' => 'create',
'last'=>true),
'mustMatch' => array(
'rule' => array('checkpassword'),
'message'=> 'Old password is incorrect',
'on' => 'update',
'last'=>true),
),
'newpassword'=>array(
'mustNotEmpty'=>array(
'rule' => 'notEmpty',
'message'=> 'Please enter a new password',
'on' => 'update',
'last'=>true),
'mustBeLonger'=>array(
'rule' => array('minLength', 6),
'message'=> 'Password must be greater than 5 characters',
'on' => 'update',
'last'=>true),
'mustMatch'=>array(
'rule' => array('newverifies'),
'message' => 'Both passwords must match'),
)
);
$this->validate = $validate1;
return $this->validates();
}
Then in the controller you change your code accordingly.
$this->User->validates()
becomes $this->User->registerValidate()
in your user registration function, etc.
Hope this helps.
Upvotes: 2