2009-12-12 7 views
1
$text = new Zend_Form_Element_Text(); 
      $ValidateRange = new Zend_Validate_Between(0, 999999.99); 
      $ValidateFloat = new Zend_Validate_Float(); 
      $ValidateFloat->setLocale(new Zend_Locale('de_AT')); 
      $ValidateRange->setMessage('Please enter the amount between [0-9999] '); 
      $textValidateFloat->setMessage('Please enter the amount properly');     
      $text->addValidator($ValidateRange); 
      $text->addValidator($ValidateFloat); 

Le code ci-dessus fonctionne correctement si vous entrez une valeur comme 12,23. Si nous entrons 12.23 le formulaire n'a montré aucun message d'erreur. Comment nous pouvons montrer le message d'erreur. Aidez-moi, s'il vous plaît . merci à l'avance ...Utilisation de Zend Validation Flottant avec un environnement local spécifique

Répondre

3

En regardant dans le Zend/Valider/code flotteur, il vérifie toujours à la fois vos paramètres régionaux définis et anglais:

if (!Zend_Locale_Format::isFloat($value, array('locale' => 'en')) && 
    !Zend_Locale_Format::isFloat($value, array('locale' => $this->_locale))) { 

Ainsi, vous aurez besoin d'étendre ou de réécrire cette validateur, en supprimant la partie 'locale' => 'en'.

modifier:

Votre validateur, l'extension Zend_Validate_Float, peut ressembler à ceci:

public function isValid($value) 
{ 
    if (!parent::isValid($value)) return false; 

    if (!Zend_Locale_Format::isFloat($value, array('locale' => 'de_AT'))) { 
     $this->_error(self::NOT_FLOAT); 
     return false; 
    } 
    return true; 
} 
Questions connexes