Zend form doğrulama

3 Cevap php

Ben dinamik form oluşturmak için Zend Form kullanıyorum.

Ben de Zend Form doğrulama var.

Dinamik Doğrulama kaldırmak için çalışıyoruz, ancak herhangi bir başarı elde değil.

Zend Doğrulama kaldırmak için bana yardım plz.

Körük kaldır doğrulama için benim kod:

$toRemValArray = array();
$toRemValArray[0] = 'ele_4af42ceac7810';

if(isset($_POST['btnPost_x'])){                 
    if ($form->isValid($_POST)) {
        $allElements = $form->getElements();
        foreach($allElements as $val){
            if(in_array('ele_4af42ceac7810',$toRemValArray)){
                $value = $form->getElement($val->getName());
                $value->removeValidator('ele_4af42ceac7810');
            }
        }
    }
}

Benim kod herhangi bir sorun yaşıyor olmadığını bilsin

Thanks Mohammad Tareque

3 Cevap

Sen BEFORE çağırarak onaylayıcıyı kaldırmak gerekir $form->isValid().

Benim form sınıf isValid yöntemi geçersiz ve boş kalsa parola alanında onaylayıcıyı çıkarmadan ile geldi çözüm:

public function isValid($data)
{
    if (empty($data['password'])) {
        $this->form
             ->getElement('password')
             ->clearValidators();

        $this->form
             ->getElement('password_confirm')
             ->clearValidators();
    }
    return $this->form->isValid($data);
}

Aynı zamanda bir Zend Form soyundan sınıfı genişletirken $this->form bileşimi tarafından genişletilmiş olan formuna adlandırılır, çözelti çalışır.

Sadece bir yan not, bu çözüm won't work if şifre alandır required

Sizin kod adıyla bir doğrulayıcı kaldırıyor

$value->removeValidator('ele_4af42ceac7810');

Bu genellikle NotEmpty veya Regex eleman adının aksine gibi bir şeydir.

Belki istediğiniz

$value->clearValidators();

Ayrıca, 1 Ismael - Eğer $form->isValid() çağırmadan önce kaldırın