3

我的表单/video.php 中有以下代码片段。但我不知道在哪里添加所需的验证消息。

$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 回答