Ich erstelle ein Zahlungsformular mit Symfony 1.4, und mein Formular hat ein Datum-Widget wie folgt definiert, so dass der Benutzer das Ablaufdatum seiner Kreditkarte auswählen kann:
new sfWidgetFormDate(array(
'format' => '%month%/%year%',
'years' => array_combine(range(date('Y'), date('Y') + 5), range(date('Y'), date('Y') + 5))
Beachten Sie das Fehlen von %day% im Format wie bei den meisten Zahlungsformularen.
Mein Problem ist nun, dass sfValidatorDate verlangt, dass das Feld "Tag" nicht leer sein darf. Um dies zu umgehen, habe ich einen benutzerdefinierten Validator mit einem Callback erstellt, der gut funktioniert:
public function validateExpirationDate($validator, $value)
{
$value['day'] = '15';
$dateValidator = new sfValidatorDate(array(
'date_format' => '#(?P<day>\d{2})(?P<month>\d{2})(?P<year>\d{2})#',
'required' => false,
'min' => strtotime('first day of this month')));
$dateValidator->clean($value);
return $value;
}
Ich denke, dass es einen einfacheren Weg geben könnte, dies zu erreichen. Was meinen Sie dazu? Haben Sie dieses Problem bereits auf eine sauberere Weise gelöst?