2

フォームの検証には Zend\InputFilter\InputFilter クラスを使用します。pointフィールドは 1 ~ 5 の整数のみを受け入れる必要があります。しかし、1 ~ 5 の整数で始まる文字列を受け入れると正しく動作しません。たとえば、1kjhkjh、2tgfjhgfjhf、4jhkljg などです。

$inputFilter->add (
            $inputFilter->getFactory()->createInput (
                array (
                    'name' => 'point',
                    'required' => true,
                    'validators' => array ( 
                        array(
                            'name' => 'Digits'),    
                        array (
                            'name' => 'Between',
                            'options' => array (
                                'min' => 1,
                                'max' => 5,
                                'messages' => array('notBetween' => 'Point must be between %min% and %max%')
                            )
                        )
                    )
                )
            )
        );
4

2 に答える 2

3

zend バリデーターの 2 番目のパラメーターを使用して、バリデーター チェーンを中断し、エラーを返します。breakChainOnFailure(ドキュメント) は、このエラーがトリガーされた場合に検証を停止するように要素に指示します。ユーザーは、2 番目のバリデータもトリガーされるエラーを修正しました。

$inputFilter->add (
            $inputFilter->getFactory()->createInput (
                array (
                    'name' => 'point',
                    'required' => true,
                    'validators' => array ( 
                        array(
                            'name' => 'Digits', 'breakChainOnFailure' => true),    
                        array (
                            'name' => 'Between',
                            'options' => array (
                                'min' => 1,
                                'max' => 5,
                                'messages' => array('notBetween' => 'Point must be between %min% and %max%')
                            )
                        )
                    )
                )
            )
        );

別のオプションは、ユーザーが無効なデータを入力した場合にユーザーに表示したいエラーメッセージに応じてZend_Validate_DigitsZend_Validate_Int(ドキュメント)に置き換えることです。もちろん、コメントで示唆されているように、Zend_Filter_Int無効なデータを自分で修正して処理し、ユーザーが間違ったことについてフィードバックを提供しない場合は、 を使用することもできます。

于 2013-07-23T14:27:16.020 に答える