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.

Reply via email to