1

私はzendフォームを使用しています。フィールドを検証し、フィールドにフラット値と整数値のみを許可したい。2.0 or 3.56, etcこれは、ユーザーがORなどの任意の浮動値を入力できることを意味します4 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'))
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 に答える