2010-04-16 13 views
1

J'ai une forme de zend avec un début et un endate.comment vérifier si la date de fin est après la date de début dans une forme de zend

$form = new Zend_Form(); 
$form->setName($this->formName) 
    ->setMethod('post'); 

$feStartdate = new Zend_Form_Element_Text('startdate'); 
$feEnddate = new Zend_Form_Element_Text('enddate'); 

$form->addElement($feStartDate) 
    ->addElement($feEndDate) 
    ->addElement('submit', 'submit', array('label' => 'Save')); 

Je suppose que je dois écrire un validateur personnalisé pour vérifier ceci. À quoi ressemblerait ce validateur personnalisé et comment puis-je l'appeler? Je suppose quelque chose comme

$feEnddate->addValidator('dateComesAfter', $feStartDate) 

Répondre

0

Eh oui, custom validator, combiné avec Zend_Date :: isLater() serait la voie à suivre.

+0

Je suppose que le validateur doit être attaché à la date de fin. Dans la fonction isValid ($ value) dans le validateur, la valeur $ est la valeur de enddate. Comment puis-je obtenir la valeur de startdate dans le validateur? – murze

+0

Désolé pour le retard - n'a pas reçu l'email lorsque vous avez répondu. yes - vous pouvez l'ajouter à enddate, et dans la fonction isValid ($ value, $ context), vous voulez utiliser $ context ['field_name'] pour accéder au champ que vous voulez comparer. Pour résumer le validateur, vous devez définir le nom du champ à comparer dans le constructeur. Constructor serait: .. construire ($ fieldName, $ fieldTitle) .. et isValid (valeur $, le contexte $ = null) - vous avez: $ otherFieldValue = contexte $ [$ this-> _otherFieldName]; Évidemment, c'est un exemple rudimentaire, mais j'espère que cela illustre comment vous pouvez le faire. – delsurf

Questions connexes