All validation entries have an `allowEmpty` parameter that says
whether the field must be filled in or not. An empty field will *not*
go through the validation rule itself and will be validated or failed
depending on the `allowEmpty` parameter (not to be confused with the
`required` parameter, which controls whether the field must be
*present* in the data).

To validate a decimal number you can use a callback, like you have, or
a regular expression. For example:

var $validate = array(
  'field' => array(
    'allowEmpty' => true,
    'rule' => '/^[0-9]*\\.?[0-9]+$/',
    'message' => 'This must be blank or a positive decimal number'
  )
);

You could use a different regular expression to allow negative
numbers, enforce limits on the fraction digits, or allow scientific
notation as well.

For example, if you wanted a positive number with maximum 2 digits
after the decimal point then you'd use something like:

'/^[0-9]+(\\.[0-9]{,2})?$/'

On Mar 28, 8:12 am, Tim W <[EMAIL PROTECTED]> wrote:
> In case anyone else wants to know how i've done it, it's as simple as
> this
>
> Model
>
> var $validate = array(
>   'fieldName' => array('integer_optional' => array('rule' =>
> array('optionalInteger', 'fieldName')))
> );
> // NB: integer_optional is the key to look up the error message
>
> function optionalInteger($data, $fieldName) {
>   if (strlen($data[$fieldName]) > 0) {
>     return is_numeric($data);
>   }
>
>   return true;
>
> }
>
> I couldn't work out how to call an existing validation method (given
> the 2 minutes I spent on it) so I just wrote my own since it was
> trivial and quicker. I'm still interested to hear a better way to do
> this, if one exists :)
>
> Tim
>
> On Mar 28, 8:56 pm, Tim W <[EMAIL PROTECTED]> wrote:
>
> > Hi all,
>
> > I have some data that's optional, but if it's filled in it must be a
> > decimal. Is there an easy way to do this with 1.2 validation? My
> > current though is that I might create a custom validation rule, and
> > from their if the field isn't blank then send it through to the built
> > in validation code.
>
> > Thanks
>
> > Tim
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" 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