3

forms/video.phpに次のコードスニペットがあります。しかし、requiredの検証メッセージをどこに追加すればよいかわかりません。

$this->addElement('text','name', array(
        'label'=>'Name',
        'maxlength'=>20,
        'class'=>'name',
        'required'=>true,
        'filters'=>array('StringTrim'),
        'decorators'=>array(
            'ViewHelper',
            'Errors',
            array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')),
            array('Label', array('tag'=>'div', 'class'=>'name')),
            array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')),
        )
    ));

「値は必須で空にすることはできません」ではなく、「名前を入力してください」のように設定したいと思います。

4

3 に答える 3

5

結局、私はこれを機能させました:

$this->addElement('text', 'age', array(
            'label'=>'Age',
            'maxlength'=>2,
            'class'=>'age',
            'required'=>true,
            'filters'=>array('StringTrim'),
            'validators'=>array(
                array(
                    'validator'=>'NotEmpty',
                    'options'=>array(
                        'messages'=>'Please enter your age.'
                    ),
                    'breakChainOnFailure'=>true
                ),
                array(
                    'validator'=>'Int',
                    'options'=>array(
                        'messages'=>'Age must be a number.'
                    ),
                    'breakChainOnFailure'=>true
                ),
                array(
                    'validator'=>'between',
                    'options'=>array(
                        'min'=>8,
                        'max'=>10,
                        'messages'=>array(
                            Zend_Validate_Between::NOT_BETWEEN => 'This is for %min% to %max% years old.'
                        )
                    )
                ),

            ),
            'decorators'=>array(
                'ViewHelper',
                'Errors',
                array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')),
                array('Label', array('tag'=>'div', 'class'=>'age')),
                array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')),
            ),
        ));
于 2012-05-10T10:46:21.220 に答える
1

requiredセットをデフォルトのままにして、NotEmpty代わりにバリデーターを使用する可能性があります。

$this->addElement('text', 'age', array(
            'label'=>'Age',
            'maxlength'=>2,
            'class'=>'age',
            'filters'=>array('StringTrim'),
            'validators'=>array(
                array(
                    'validator'=>'Int',
                    'options'=>array(
                        'messages'=>'Age must be a number.'
                    )
                ),
                array(
                    'validator'=>'NotEmpty',
                    'options'=>array(
                        'messages'=>'Please enter your age.'
                    )
                ),
                array(
                    'validator'=>'between',
                    'options'=>array(
                        'min'=>8,
                        'max'=>10,
                        'messages'=>array(
                            Zend_Validate_Between::NOT_BETWEEN => 'Your age must be between %min% to %max%.'
                        )
                    )
                )
            ),
            'decorators'=>array(
                'ViewHelper',
                'Errors',
                array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')),
                array('Label', array('tag'=>'div', 'class'=>'age')),
                array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')),
            ),
        ));

NotEmpty()と本質的に同じことを行いますisRequired()が、は実際のバリデーターでisRequired()あり、はで設定されたフラグZend_Form_Elementです。また、それはあなたのメッセージを台無しにするべきではありません。

于 2012-05-10T10:54:53.217 に答える
0

編集済み

これはそれを行う必要があります:

...
$name = $this->getElement('name')->addErrorMessage('Please enter your name');
...
于 2012-05-10T10:08:52.880 に答える