Php Zend框架-整数验证器

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)

Zend Framework似乎有一个验证整数的功能(为此,在库中选中了/Validate/Int.php),它将浮点数正确地验证为整数,而我想在给定浮点数时显示错误

以下是我表格中的一个片段:

  $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()时。