Zend Framework:如何在表单元素上设置自定义验证器?

时间:2008-12-23 00:36:39

标签: zend-framework zend-form zend-validate

我正在编写一个自定义验证程序,用于检查至少有一个字段是否有值。我想验证'namefield'或'idfield'是否有值。其中一个可以是空的,或者两个都可以有一个值,但至少其中一个必须有一个值。

$nameField = new Zend_Form_Element_Hidden('namefield');
$nameField->setValue($this->nameFieldValue)
          ->addValidator('AtLeastOneHasValue', false, array('idfield'));

根据我的理解,除非我将表单元素设置为required,否则我的验证器不会验证。

->setRequired(true)

但是,如果我将其设置为required,它会自动验证它是否为空,并且错误消息显示它为空。我想允许该字段为空,并使用我的自定义验证器验证多个字段。如何使用自定义验证器验证表单元素,而不将表单元素设置为必需?

1 个答案:

答案 0 :(得分:6)

检查this documentation page以获取setAllowEmpty()方法。这应该可以帮助您到达目的地。

  

setAllowEmpty($ flag)和   getAllowEmpty()允许你修改   可选元素的行为   (即所需要的元素   旗帜是假的)。什么时候'允许空'   flag为true,空值不会   传递到验证器链。