为什么Zend_Form NotEmpty验证器会给我一个错误信息?

时间:2013-04-13 09:32:20

标签: zend-form

对于需要的Zend表单元素,我通常会这样做:

$this->addElement('text', 'loginEmail');
$this->loginEmail
        ->setLabel('Email')
        ->setRequired(true);

我对错误信息感到不满意。 Zend文档说setRequired()只是在链中添加了一个NotEmpty验证器,所以我这样做了:

    $validator = new Zend_Validate_NotEmpty();
    $validator->setMessage('A value is required');

    $this->addElement('text', 'loginEmail');
    $this->loginEmail
            ->setLabel('Email')                
            ->addValidator($validator);

但是现在我没有收到该元素的任何错误消息!

1 个答案:

答案 0 :(得分:0)

好的,所以我没有真正得到我的问题的答案,但我已经意识到setRequired()验证器是一个复杂的小动物,可能不是Zend团队最骄傲的时刻。因此,我没有寻找上述问题的答案,而是找到了一个非常好用的setRequired方法。这是:

    $this->addElement('text', 'orgName');
    $this->orgName
            ->setLabel('Name')
            ->addFilter('StringTrim')                
            ->addValidator('NotEmpty', true, array(
                'messages' => 'Name is required'))                
            ->setRequired(true)
            ->addValidator('Alnum', false, array(
                'allowWhiteSpace'   => true,
                'messages'          => 'Alpha and numeric characters only'))
            ->addValidator('StringLength', false, array(
                'min'       => 3,
                'max'       => 128,
                'messages'  => 'Between 3 and 128 characters'));        

关键是添加NotEmpty验证器并在调用setRequired之前将其配置为当调用setRequired时,它会检测到NotEmpty验证器已经添加到链中,因此不添加自己的验证器实例