0

对于需要的 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);

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

4

1 回答 1

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 验证器已添加到链中,因此不会添加自己的实例。

于 2013-04-27T04:56:29.397 回答