Re: Credit Card Expiration Date Validation

2009-02-16 Thread JoshSchramm

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

2009-02-11 Thread grigri

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

2009-02-10 Thread JoshSchramm

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
-~--~~~~--~~--~--~---