You can try dynamically adding or removing validation rules in your custom 'checkOne' method.
On 15 July 2014 15:44, seba <sebastian.allocca@gmail.com> wrote:
Folks,--I'm trying to ensure at least one of two fields (last_name or email) is being populated. Each field also has multiple rules. I'm using CakePHP version 2.4.2.The problem I have at the moment, after multiple permutations of updating and/or moving around the use 'last', 'allowEmpty', 'required', etc, is that the fields just aren't validating at all, or aren't executing all the rules when a field is populated.Any advice on how to modify the code below to achieve the following behaviour is much appreciated:1. One of the two fields must be populated;2. The other rules attached to each field must validate as well (i.e. if a last name is passed, then it must be between 2 and 45 chars and alphanumeric only)Here's the model code:public $validate = array('last_name'=> array('needOne' => array ('required' => FALSE,'allowEmpty' => TRUE,'last' => TRUE,'rule' => array('checkOne','last_name'),'message' => 'You must enter at least a contact name or email address.'),'alphaNumeric' => array('rule' => 'alphaNumeric','message' => 'Alphabets and numbers only'),'between' => array('rule' => array('between', 2, 45),'message' => 'Between 2 to 45 characters')),'email' => array('needOne' => array ('required' => FALSE,'allowEmpty' => TRUE,'last' => TRUE,'rule' => array('checkOne','email'),'message' => 'You must enter at least a contact name or email address.'),'emailAddress' => array ('last' => TRUE,'rule' => array('email', FALSE),'message' => 'A valid Email address is required')));// Ensure at least the last name or email field value is providedfunction checkOne() {if(!empty($this->data[$this->User]['last_name']) ||!empty($this->data[$this->User]['email'])){return true;} else {return false;}}Thanks in advance!
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.
Kind Regards
Stephen Speakman
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment