2009-12-12 85 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); 

上述代碼工作正常,如果我們輸入值如12,23。如果我們輸入12.23,表單沒有顯示任何錯誤信息。我們如何顯示錯誤信息。請幫幫我 。在此先感謝...使用Zend驗證使用特定語言環境的浮點數

回答

3

展望了Zend /驗證/浮點代碼,它總是會檢查你定義的區域設置英語:

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

所以,你需要擴展或重寫本驗證器,刪除'locale'=>'en'部分。

編輯:

您的驗證,擴展Zend_Validate_Float,可以是這個樣子:

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; 
} 
相關問題