10

Value is required and can't be emptyzf2のデフォルトのエラー メッセージ " " をカスタマイズしようとしています。

次のコードを使用して、inputfilter のバリデーターにカスタマイズされたデフォルトのエラー メッセージを追加しています

$inputFilter->add($factory->createInput(array(
                'name' => 'username',
                'required' => true,
                'filters' => array(
                    array('name' => 'StripTags'),
                    array('name' => 'StringTrim'),
                ),
                'validators' => array(
                    array(
                        'name' => 'StringLength',
                        'options' => array(
                            'encoding' => 'UTF-8',
                            'min' => 4,
                            'max' => 20,
                            'messages' => array(
                                'isEmpty' => 'Please enter User Name between 4 to 20 character!' 
                            ),                            
                        ),
                    ),
                ),
            )));

しかし、次のエラーが発生します。

Zend\Validator\Exception\InvalidArgumentException

File:
    /home/website/vendor/zendframework/zendframework/library/Zend/Validator/AbstractValidator.php:220

Message:
    No message template exists for key 'isEmpty'

私が間違っていることは何ですか?

参照

4

3 に答える 3

22

これを試して

$inputFilter->add($factory->createInput(array(
                'name' => 'username',
                'required' => true,
                'filters' => array(
                    array('name' => 'StripTags'),
                    array('name' => 'StringTrim'),
                ),
                'validators' => array(
                    array(
                      'name' =>'NotEmpty', 
                        'options' => array(
                            'messages' => array(
                                \Zend\Validator\NotEmpty::IS_EMPTY => 'Please enter User Name!' 
                            ),
                        ),
                    ),
                    array(
                        'name' => 'StringLength',
                        'options' => array(
                            'encoding' => 'UTF-8',
                            'min' => 4,
                            'max' => 20,
                            'messages' => array(
                                'stringLengthTooShort' => 'Please enter User Name between 4 to 20 character!', 
                                'stringLengthTooLong' => 'Please enter User Name between 4 to 20 character!' 
                            ),
                        ),
                    ),
                ),
            )));

参照

その他のバリデータセット

于 2012-10-04T10:14:33.240 に答える
3

次のように、inputFilter のエラー メッセージを設定することもできます。

    $form = new ParticipantForm();  
    $mailInput = new Input('mail');
    $mailInput->setRequired(true);
    $mailInput->setErrorMessage("Empty input");
于 2012-11-10T12:44:13.873 に答える
1

StringLength バリデータは、入力が空かどうかをチェックしません。長さをチェックします。StringLength バリデータには、次のメッセージ テンプレートが存在します。

const INVALID   = 'stringLengthInvalid';
const TOO_SHORT = 'stringLengthTooShort';
const TOO_LONG  = 'stringLengthTooLong';

/**
 * @var array
 */
protected $messageTemplates = array(
    self::INVALID   => "Invalid type given. String expected",
    self::TOO_SHORT => "The input is less than %min% characters long",
    self::TOO_LONG  => "The input is more than %max% characters long",
);

直接的なアプローチについては、@Developer の例を参照してください。バリデーターのキャメルケースの命名を使用することをお勧めしますが、'name' => 'NotEmpty'代わりに'name' => 'not_empty'

各バリデータ クラスのコードが表示されれば、どの messageTemplate が存在するかを確認できます。あなたはそれらを見つけるでしょう./vendor/zendframework/zendframework/library/Zend/Validator/*

于 2012-10-04T11:07:55.847 に答える