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 <[email protected]> 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]=>XXXX}
>
> 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 [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
-~----------~----~----~----~------~----~------~--~---