Zend form validation
Asked Answered
D

3

5

I am using Zend Form to create dynamic form.

I have Zend Form validation too.

Trying to remove Validation dynamically, but not getting any success.

Can you plz help me to remove Zend Validation.

Bellow is my code for remove validation :

$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');
            }
        }
    }
}

Let me know whether my code is having any issue

Thanks Mohammad Tareque

Definite answered 10/11, 2009 at 10:36 Comment(0)
T
4

You should remove the validator BEFORE calling $form->isValid().

Terminology answered 10/11, 2009 at 10:50 Comment(0)
K
3

The solution I came up with was overriding the isValid method on my form class and removing the validator on the password field if it was left blank:

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

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

The $this->form is referred to the form being extended by composition, the solution works when extending a Zend Form descendent class as well.

Just a side note, this solution won't work if the password field is required

Keef answered 27/8, 2010 at 20:1 Comment(0)
S
1

Your code is removing a validator by name

$value->removeValidator('ele_4af42ceac7810');

This is typically something like NotEmpty or Regex as opposed to the element name.

Maybe you want

$value->clearValidators();

Also, +1 Ismael - you should remove it prior to calling $form->isValid()

Shanney answered 10/11, 2009 at 10:58 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.