Zend framework Zend表单:自定义验证程序isvalid()

Zend framework Zend表单:自定义验证程序isvalid(),zend-framework,zend-form,zend-validate,Zend Framework,Zend Form,Zend Validate,我必须在我的表单中创建自定义表单:isvalid()函数,如下所示,因为我必须检查这两个字段中是否至少有一个已填写: 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)

我必须在我的
表单中创建自定义
表单:isvalid()
函数,如下所示,因为我必须检查这两个字段中是否至少有一个已填写:

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);

}
只有在发现另一个错误(其他字段)时,
PZN
PZO
的错误才会触发。 如何获取
表单错误
? 字段
PZN
PZO
被定义为
不需要

短暂性脑缺血发作 马特

试试:

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;
}
尝试:


很高兴知道它起作用了。您可以将其标记为已接受答案:)需要等5分钟……”您可以在5分钟内接受答案。^^很高兴知道答案有效。您可以将其标记为已接受答案:)需要等5分钟……”你可以在5分钟内接受答案^^