Re: Credit Card Expiration Date Validation
Oh cool i didnt know i could code a custom method and call it from the validates array. Thats way better than what I've been doing (override validates.) Thanks. On Feb 11, 9:37 am, grigri wrote: > Here's an excerpt from a model I had for validating this sort of > thing: > > class Order extends AppModel { > var $name = "Order"; > > var $validate = array( > // ... > 'card_valid_from' => array( > 'on' => 'card', > 'allowEmpty' => false, > 'rule' => array('validateRelativeDate', false), > 'message' => 'Time travellers are not allowed to shop > here' > ), > 'card_valid_to' => array( > 'on' => 'card', > 'allowEmpty' => false, > 'rule' => array('validateRelativeDate', true), > 'message' => 'That card has expired' > ), > // ... > ); > > function deconstruct($field, $data) { > if ($field == 'card_valid_from' || $field == 'card_valid_to') > { > $data['day'] = '01'; > } > return parent::deconstruct($field, $data); > } > > function validateRelativeDate($date, $inFuture) { > $now = date('Y-m') . '-01'; > > $date = reset($date); > > if ($inFuture) { > return $date >= $now; > } > else { > return $date <= $now; > } > } > > } > > The view form elements look like this (excerpt): > > echo $form->inputs(array( > 'legend' => 'Pay by Credit Card', > 'card_valid_from' => array('type' => 'date', 'dateFormat' => 'MY'), > 'card_valid_to' => array('type' => 'date', 'dateFormat' => 'MY') > )); > > hth > grigri > > On Feb 10, 7:38 pm, JoshSchramm wrote: > > > Hey all, > > > I cant seem to find anything online to explain this so i'm hoping you > > all can help a bit. > > > I am validating credit card information and right now i'm working on > > ensuring the user enters an expiration date. > > For this i have to fields one for month and one for year both using > > $form->input('type'='date') > > > When they post the data looks like > > [ExpirationMonth] { [month]=>XX }, [ExpirationYear] { [year]=>} > > > On the back end I'm trying to validate this and it doesnt want to > > work. My validate array looks like this. > > > 'ExpirationMonth.month'=>array( > > 'numeric'=>array( > > 'rule'=>'numeric', > > 'allowEmpty'=>false, > > 'required'=>true, > > 'message'=>'ExpirationMonthInvalid' > > ), > > 'between'=>array( > > 'rule'=>array('between', 1, 12), > > 'allowEmpty'=>false, > > 'required'=>true, > > 'message'=>'ExpirationMonthInvalid' > > ), > > ), > > 'ExpirationYear.year'=>array( > > 'notEmpty'=>array( > > 'rule'=>'notEmpty', > > 'allowEmpty'=>false, > > 'required'=>true, > > 'message'=>'ExpirationYearInvalid' > > ), > > 'numeric'=>array( > > 'rule'=>'numeric', > > 'allowEmpty'=>false, > > 'required'=>true, > > 'message'=>'ExpirationYearInvalid' > > ) > > ) > > > no matter what i do i don't get an error message back. > > > To clarify a bit more i have a 'empty'=>'Choose Month (or year)' in > > the drop downs so I'm just trying to make sure the user selected > > something other than that option. > > > Any ideas? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Credit Card Expiration Date Validation
Here's an excerpt from a model I had for validating this sort of thing: class Order extends AppModel { var $name = "Order"; var $validate = array( // ... 'card_valid_from' => array( 'on' => 'card', 'allowEmpty' => false, 'rule' => array('validateRelativeDate', false), 'message' => 'Time travellers are not allowed to shop here' ), 'card_valid_to' => array( 'on' => 'card', 'allowEmpty' => false, 'rule' => array('validateRelativeDate', true), 'message' => 'That card has expired' ), // ... ); function deconstruct($field, $data) { if ($field == 'card_valid_from' || $field == 'card_valid_to') { $data['day'] = '01'; } return parent::deconstruct($field, $data); } function validateRelativeDate($date, $inFuture) { $now = date('Y-m') . '-01'; $date = reset($date); if ($inFuture) { return $date >= $now; } else { return $date <= $now; } } } The view form elements look like this (excerpt): echo $form->inputs(array( 'legend' => 'Pay by Credit Card', 'card_valid_from' => array('type' => 'date', 'dateFormat' => 'MY'), 'card_valid_to' => array('type' => 'date', 'dateFormat' => 'MY') )); hth grigri On Feb 10, 7:38 pm, JoshSchramm wrote: > Hey all, > > I cant seem to find anything online to explain this so i'm hoping you > all can help a bit. > > I am validating credit card information and right now i'm working on > ensuring the user enters an expiration date. > For this i have to fields one for month and one for year both using > $form->input('type'='date') > > When they post the data looks like > [ExpirationMonth] { [month]=>XX }, [ExpirationYear] { [year]=>} > > On the back end I'm trying to validate this and it doesnt want to > work. My validate array looks like this. > > 'ExpirationMonth.month'=>array( > 'numeric'=>array( > 'rule'=>'numeric', > 'allowEmpty'=>false, > 'required'=>true, > 'message'=>'ExpirationMonthInvalid' > ), > 'between'=>array( > 'rule'=>array('between', 1, 12), > 'allowEmpty'=>false, > 'required'=>true, > 'message'=>'ExpirationMonthInvalid' > ), > ), > 'ExpirationYear.year'=>array( > 'notEmpty'=>array( > 'rule'=>'notEmpty', > 'allowEmpty'=>false, > 'required'=>true, > 'message'=>'ExpirationYearInvalid' > ), > 'numeric'=>array( > 'rule'=>'numeric', > 'allowEmpty'=>false, > 'required'=>true, > 'message'=>'ExpirationYearInvalid' > ) > ) > > no matter what i do i don't get an error message back. > > To clarify a bit more i have a 'empty'=>'Choose Month (or year)' in > the drop downs so I'm just trying to make sure the user selected > something other than that option. > > Any ideas? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Credit Card Expiration Date Validation
Hey all, I cant seem to find anything online to explain this so i'm hoping you all can help a bit. I am validating credit card information and right now i'm working on ensuring the user enters an expiration date. For this i have to fields one for month and one for year both using $form->input('type'='date') When they post the data looks like [ExpirationMonth] { [month]=>XX }, [ExpirationYear] { [year]=>} On the back end I'm trying to validate this and it doesnt want to work. My validate array looks like this. 'ExpirationMonth.month'=>array( 'numeric'=>array( 'rule'=>'numeric', 'allowEmpty'=>false, 'required'=>true, 'message'=>'ExpirationMonthInvalid' ), 'between'=>array( 'rule'=>array('between', 1, 12), 'allowEmpty'=>false, 'required'=>true, 'message'=>'ExpirationMonthInvalid' ), ), 'ExpirationYear.year'=>array( 'notEmpty'=>array( 'rule'=>'notEmpty', 'allowEmpty'=>false, 'required'=>true, 'message'=>'ExpirationYearInvalid' ), 'numeric'=>array( 'rule'=>'numeric', 'allowEmpty'=>false, 'required'=>true, 'message'=>'ExpirationYearInvalid' ) ) no matter what i do i don't get an error message back. To clarify a bit more i have a 'empty'=>'Choose Month (or year)' in the drop downs so I'm just trying to make sure the user selected something other than that option. Any ideas? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---