1

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

我使用digit了验证器,但它只允许digitsnot 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'))
4

2 回答 2

2

创建和使用自定义验证器真的很容易。您可以简单地通过使用 PHP is_int 和 is_float 函数进行验证,并且仍然以“Zend 方式”进行。

于 2012-10-20T22:08:41.603 回答
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;
                                                        }
                                                )
                                        )
                                )
                        )));
于 2014-07-22T06:23:21.063 回答