1.2 validation - may be blank, but if filled in must be a decimal
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 cake-php@googlegroups.com 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 -~--~~~~--~~--~--~---
Re: 1.2 validation - may be blank, but if filled in must be a decimal
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 cake-php@googlegroups.com 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 -~--~~~~--~~--~--~---
Re: 1.2 validation - may be blank, but if filled in must be a decimal
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 cake-php@googlegroups.com 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 -~--~~~~--~~--~--~---
Re: 1.2 validation - may be blank, but if filled in must be a decimal
Ah that's even better, thank you grrigri, you've made my life a little easier :-) Tim On Mar 28, 10:40 pm, grigri [EMAIL PROTECTED] wrote: 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 cake-php@googlegroups.com 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 -~--~~~~--~~--~--~---