2012-05-04 2 views
0

я должен создать свою пользовательскую функцию FORM:isvalid() в моем form, как показано ниже, потому что я должен проверить, если один из этих 2-х полей, по крайней мере заполнены:Zend Form: валидатора 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 будут срабатывать только в том случае, если будет найдена другая ошибка (другое поле). Как я могу получить form error? Поле PZN и PZO определены как not required.

ТИА Matt

ответ

4

Try:

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; 
} 
+0

Ааа. Большое спасибо за помощь. Это было так просто ... – frgtv10

+0

Рад, что это сработало. Вы могли бы отметить это как принятый ответ .. :) –

+0

нужно подождать 5 минут ... «вы можете принять ответ за 5 минут» ^^ – frgtv10

Смежные вопросы