Sitansu
Sitansu

Reputation: 891

Cakephp validating specific field with specific rule without saving the data from controller

I want to validate fields with Cakephp model validation, without saving the data, for which i am using the following code in controller.

$this->Model->set($this->data);
if ($this->Model->validates()) {
   ......
}

But here i want to validate only some specific field like 'email_field' and one of its rule 'email'. In model i have specified some other rules for 'email_field' like 'unique' and 'notempty' but i don't want to validate those rules.

How can it be achieved ?

Upvotes: 3

Views: 4124

Answers (3)

Carlos Espinoza
Carlos Espinoza

Reputation: 1175

......
$this->Registry->validate = array(
    'email_field' => array(
       'between' => array(
            'rule' => array('between', 10, 100),
            'message' => 'Your custom message here',
            'required' => true,
        ),
    )
);
$this->Model->set($this->data); 
if ($this->Model->validates(array('fieldList' => array('email_field')))) {
    ......
}

Upvotes: 1

Ehtesham
Ehtesham

Reputation: 2985

The above will work definitely but it's not an elegant solution when cake has already documented how to validate specific fields of a Model.

   if ($this->Model->validates(array('fieldList' => array('field1', 'field2')))) {
       // valid
   } else {
      // invalid
   }

For more detail see cookbook

Upvotes: 10

mark
mark

Reputation: 21743

you have different options

you can dynamically unset those other rules:

unset($this->Model->validate['field']['someRuleName']);

or you can assign a completely new rule set to this field

or you can use a different "nonexistent" field for this validation, e.g. "some_other_field" with special rules.

Upvotes: 6

Related Questions