$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,表单没有显示任何错误消息。我们如何显示错误消息。请帮我 。提前谢谢......
答案 0 :(得分:3)
查看Zend / Validate / Float代码,它总是检查您定义的语言环境和 english:
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;
}