Zend表单:自定义验证器无效()

时间:2012-05-04 08:54:19

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

我必须在我的FORM:isvalid()中创建自定义form功能,如下所示,因为我必须检查这两个字段中是否至少填写了其中一个:

class Products_AddForm extends Zend_Form {

public function isValid($data)
{

    // Check special post data
    $pzn_val = $data['PZN'];
    $mar_val = $data['PZO'];

    if(empty($pzn_val) && empty($mar_val)) {
        $this->getSubForm('sub1')->getElement('PZN')->setErrors(array('PZN or PZO needed'));
        $this->getSubForm('sub2')->getElement('PZO')->setErrors(array('PZN or PZO needed'));
    }

    // Standard validation
    return parent::isValid($data);

}

PZNPZO的错误只会在找到其他错误(其他字段)时触发。 我怎样才能获得form error? 字段PZNPZO定义为not required

TIA 马特

1 个答案:

答案 0 :(得分:4)

尝试:

public function isValid($data) {
    $isValid = parent::isValid($data); 
    // Check special post data
    $pzn_val = $data['PZN'];
    $mar_val = $data['PZO'];

    if(empty($pzn_val) && empty($mar_val)) {
        $this->getSubForm('sub1')->getElement('PZN')->setErrors(array('PZN or PZO needed'));
        $this->getSubForm('sub2')->getElement('PZO')->setErrors(array('PZN or PZO needed'));
        $isValid = false;
    }    

    return $isValid;
}