3

ZF2 フォーム検証を使用しています。USERNAME と PASSWORD の 2 つのフィールドを検証する必要があります。すべて正常に動作していますが、次のようなメッセージが表示されます

Please enter username.
Username can not be less than 3 characters.

Please enter password.
Password can not be less than 6 characters.

ユーザーが値を入力していない場合は、このメッセージのみが表示されます

Please enter username.    
Please enter password.

失敗時にフィールドにすべてのエラーメッセージを表示したくありません。

前もって感謝します。

4

3 に答える 3

6

私は答えを得ました: ZF2 で検証チェーンを壊すには、使用する必要があります

'break_chain_on_failure' => true

$this->add(
    array(
        'name'       => 'usernmae',
        'required'   => true,
        'filters'    => array(
            array('name' => 'Zend\Filter\StringTrim')
        ),
        'validators' => array(
                          array('name' => 'NotEmpty', 
                            'options' => array('encoding' => 'UTF-8', 
                                'messages' => array(
                                    NotEmpty::IS_EMPTY => 'Please enter username')), 
                            'break_chain_on_failure' => true), 
            array(
                'name'    => 'Zend\Validator\StringLength',
                'options' => array(
                    'encoding' => 'UTF-8',
                    'min'      => 3,
                    'max'      => 30,
                    'messages' => array(
                                    StringLength::TOO_LONG => 'Username can not be more than 30 characters long', 
                                    StringLength::TOO_SHORT => 'Username can not be less than 3 characters.')
                ),
                'break_chain_on_failure' => true
            )
        )
    )
);

私のブログ : http://programming-tips.in

于 2013-03-28T10:28:36.940 に答える
1

Zend_Validate を使用すると、特定の検証が失敗した場合にバリデータ チェーンを中断できます。この場合、addValidator() 関数 $breakChainOnFailure の 2 番目のパラメーターは TRUE でなければなりません。

$validatorChain = new Zend_Validate();    
$validatorChain->addValidator(new Zend_Validate_NotEmpty(), TRUE)
               ->addValidator(new Zend_Validate_StringLength(6, 12));
于 2013-03-28T09:51:27.513 に答える