Consider the following scenario where we have a database table:users and that we need carry the validations for the following forms
i) Login
ii) Change password
iii) Add/Edit user records
iv) Forgot password
You can either write separate controllers and have each controller call a model based on
table: users to validate each input field or use the same user model to carry out different validations which sounds logical.
It is easy to carry out different validations in a cakephp model by using the
Multi-validatable Behavior by having different validation sets for different testing conditions.
Key things to note here ...
i) Download the code for
Multivalidatable Behavior and have it placed under /models/behaviors/ folder
ii) In the model where you want to have multi validation, you need to include multivalidatable behavior like
var $actsAs = array("Multivalidatable");
iii) Add validation rulesets array like
var $validationSets = array('login' => array('name'=>array('rule'=>'alphanumeric')),
'changepassword' => array('password'=>array('rule'=>'notEmpty'))
);
iv) In the controller where you want to apply the validation rule set, you need to add the respective validation like
function login(){
$this->User->setValidation('login');
}
function changepassword(){
$this->User->setValidation('changepassword');
}
For more info visit
CakePHP Bakery