4

重複の可能性:
zendframework2inputfilterはデフォルトのエラーメッセージをカスタマイズします

Zend \ InputFilter \ InputFilterを使用して、登録フォームからの入力を検証しようとしています。その下にコードがあります:

  1. 'email'フィールドの電子メールアドレスを検証します。それから
  2. 'email_confirm'の値が'email'の値と一致することを確認します。

これは、ユーザーが両方のフィールドを空白のままにした場合を除いて、すべてのインスタンスで機能します。その場合、「email_confirm」のバリデーターはエラーを返しますArray ( [isEmpty] => Value is required and can't be empty )

このエラーメッセージをカスタマイズするにはどうすればよいですか?以下を使用して設定することはできません:

'messages' => array(
    'isEmpty' => 'Message Here' 
),

これは、Zend \ Validator \Identicalに「isEmpty」のメッセージテンプレートがないという例外が(非常に正しく)スローされるためです。また、以前に「email」フィールドに設定したメッセージを取得していません。取得していない場合は、を返しArray ( [isEmpty] => Please enter your email address )ます。

$this->add($inputFactory->createInput(array(
    'name' => 'email',
    'required' => true,
    'filters' => array(
        array('name' => 'StripTags'),
        array('name' => 'StringTrim'),
    ),
    'validators' => array(
        array(
          'name' =>'NotEmpty', 
            'options' => array(
                'messages' => array(
                    'isEmpty' => 'Please enter your email address' 
                ),
            ),
        ),
        array(
            'name' => 'StringLength',
            'options' => array(
                'encoding' => 'UTF-8',
                'max' => 200,
                'messages' => array(
                    'stringLengthTooLong' => "Email addresses cannot be more than 200 characters"
                ),
            ),
        ),
        array(
          'name' =>'EmailAddress', 
            'options' => array(
                'useMxCheck'    => true,
            ),
        ),                
    ),
))); 

$this->add($inputFactory->createInput(array(
    'name' => 'email_confirm',
    'required' => true,
    'filters' => array(
        array('name' => 'StripTags'),
        array('name' => 'StringTrim'),
    ),
    'validators' => array(
        array(
            'name' => 'Identical',                        
            'options' => array(
                'token' => 'email',
                'messages' => array(
                     'notSame' => "Your email addresses do not match, please try again",
                ),
            ),
        ),               
    ),
))); 

ありがとう、ニール

4

1 に答える 1

0

Zend\Validator\NotEmpty::IS_EMPTY次のように定数を使用する必要があります。

array(
    'name' =>'NotEmpty', 
        'options' => array(
            'messages' => array(
                \Zend\Validator\NotEmpty::IS_EMPTY => 'Please enter your email address' 
        ),
    ),
),

詳細については、 APIを確認してください。

編集

Zend\Validator\NotEmpty のソース コードに飛び込むと、IS_EMPTY定数に'isEmpty'値があることがわかります。問題は解決しません。とにかく、可能性のある更新の問題を回避するために、直接値の代わりにこれらの定数を使用する必要があります。

于 2012-11-12T12:38:59.010 に答える