zend表单浮点数和整数验证

时间:2012-10-20 07:09:43

标签: zend-framework zend-form zend-validate

我正在使用zend表单。我想验证一个字段,并希望在字段中只允许平坦和整数值。这意味着用户可以输入任何浮动值,如2.0 or 3.56, etc4 or 7, etc。但我不想收到alpha numeric or alphabet input

我使用了digit验证程序,但它只允许digits而不是floating number

任何机构都可以告诉我如何将两种验证放在一起吗?

我的代码如下

$parent_affiliate_commission = new Zend_Form_Element_Text('parent_affiliate_commission');
$parent_affiliate_commission->setRequired(true)
            ->addFilter('StringTrim')
            ->addFilter('StripTags')
            ->addValidator('Digits')
            ->setAttrib('class', 'small')
            ->addValidator('StringLength', false, array(2, 100))
            ->setDecorators(array('ViewHelper', 'errors'))

2 个答案:

答案 0 :(得分:2)

创建和使用custom validator非常简单。您可以通过使用PHP is_int和is_float函数进行验证,并且仍然以'Zend方式'进行验证。

答案 1 :(得分:0)

通过使用回调方法,我验证了数字中的值。因为它不允许使用字符。

$inputFilter->add(
                $factory->createInput(
                        array(
                                'name' => 'proximity',
                                'required' => true,
                                'validators' => array(
                                        array(
                                                'name' => 'Callback',
                                                'options' => array(
                                                        'messages' => array(
                                                                \Zend\Validator\Callback::INVALID_VALUE => 'The proximity value should be numbers'
                                                        ),
                                                        'callback' => function  (
                                                                $value, 
                                                                $context = array())
                                                        {
                                                            $isValid = is_numeric(
                                                                    $value);
                                                            return $isValid;
                                                        }
                                                )
                                        )
                                )
                        )));