Php Zend框架-整数验证器
Zend Framework似乎有一个验证整数的功能(为此,在库中选中了/Validate/Int.php),它将浮点数正确地验证为整数,而我想在给定浮点数时显示错误 以下是我表格中的一个片段:Php Zend框架-整数验证器,php,zend-framework,Php,Zend Framework,Zend Framework似乎有一个验证整数的功能(为此,在库中选中了/Validate/Int.php),它将浮点数正确地验证为整数,而我想在给定浮点数时显示错误 以下是我表格中的一个片段: $form['my_int'] = new Zend_Form_Element_Text('my_int'); $form['my_int']->setLabel('My Int') ->setRequired(true)
$form['my_int'] = new Zend_Form_Element_Text('my_int');
$form['my_int']->setLabel('My Int')
->setRequired(true)
->addFilter('StringTrim')
->addDecorator('Errors', array('placement'=>'prepend',
'class'=>'my-err'))
->addValidator('NotEmpty', true, array('messages' =>
array('isEmpty' => 'Please provide data')))
->addValidator('int', true, array(
'locale' => 'en_US',
'messages' => array(
'intInvalid' => 'Please provide valid data',
'notInt' => 'Please provide valid data'
)
));
因此,当我提供与字符串、整数或浮点不同的内容时,会触发“intInvalid”错误,并显示我的自定义消息。当提供浮点数如1.23时,显示“notInt”错误。问题是,当您提供例如1.00时,验证器检查“!Zend_Locale_Format::isInteger($value,array('Locale'=>$this->\u Locale)),并确定输入是整数,当您尝试在数据库的整数字段中添加浮点数时,您会得到错误
我应该如何组织表单验证,以便在提供浮点数时,无论发生什么情况,都能向用户显示错误?您应该向该元素添加Int筛选器
$element->addFilter(new Zend_Filter_Int());
好的,但这会将所有输入转换为整数,不是吗?这样输入1.99将插入1,而不会向用户返回错误。另外,提供一些类似于“test”的字符串会将其转换为0,如果值有效,则会将0添加并保存到DB?那么。您可以在表单通过验证后应用过滤器,例如,在调用getValidValues()时。