对于需要的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);
但是现在我没有收到该元素的任何错误消息!
答案 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验证器已经添加到链中,因此不添加自己的验证器实例