You can try dynamically adding or removing validation rules in your custom 'checkOne' method.
http://book.cakephp.org/2.0/en/models/data-validation.html#removing-rules-from-the-set On 15 July 2014 15:44, seba <[email protected]> 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 provided > function 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 [email protected]. > To post to this group, send email to [email protected]. > 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.
