It just so happens I was playing around with some code for exactly
this purpose. I stress that the code is proof-of-concept, and
definitely needs work and testing before being ready for prime time,
but by all means have a play:

http://bin.cakephp.org/view/1263511817

This was my usage:

class Address extends AppModel {
  var $name = "Address";

  var $actsAs = array('ConditionalValidation');

  var $validate = array(
    'postal_code' => array(
      array(
        'required' => true,
        'allowEmpty' => false,
        'rule' => '/^.+$/',
        'message' => 'You must enter a zip/postcode'
      ),
      array(
        'on' => 'country="UK"',
        'rule' => array('postal', null, 'uk'),
        'message' => 'You must supply a valid UK postcode'
      )
    )
  );
}

(Everyone must enter a zip/postcode, but if the address is a UK one
then the postcode must be a valid uk postcode.)

The usage is simple - put an expression in the 'on' parameter. Various
operators are handled (see code). Every expression must be binary
(left op right).

The LHS and RHS can be in the following format:

"double-quoted string" => literal string
12345 => literal integer
3.1415927 => literal float
simple_field => $model->data[$model->alias][field]
other => first value extracted from $model->data with Set::extract()

hth
grigri


On Dec 16, 6:26 am, Markus <[email protected]> wrote:
> if i set it required into false, would that means the secondary field
> can be empty?
>
> how do i check something like this:
>
> if (usesecondaryemail)
>      validate secondary_email and secondary_email is not empty
>
> can the validation for this specific fields be check from controller?
>
> On Dec 16, 12:02 am, bingo <[email protected]> wrote:
>
> > hi Markus,
>
> > Within your secondary email validation criteria, set required:false
>
> > $this->validate = array(
> >      'primary_email' => 'email',
> >      'secondary_email' => array(
> >              'rule' => 'email',
> >             'required' => false,
> >            'message' => 'Please provide valid email address'
> >     )
>
> > )
>
> > On Dec 15, 10:55 am, Markus <[email protected]> wrote:
>
> > > hello,
>
> > > currently I'm creating an user input form which in it have an optional
> > > fields but that fields must be filtered too if the user give check on
> > > a checkbox, here is the example of part pf the form:
>
> > > use secondary email: <checkbox>
> > > your secondary email: <input text>
>
> > > what i want to do is disable the <input text> as default, when the
> > > user give check on check box, the <input text> is activated and user
> > > must fill the <input test> with a valid email address (couldn't be
> > > empty).
>
> > > right now, i can do filtering on the email address using CakePHP
> > > filter, but how can i run the filter only when the user give check on
> > > "use secondary email"
>
> > > if the user doesn't give check on "use secondary email" then i don't
> > > need to store the email value (it will be NULL in the database)
>
> > > thank you
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to