2010-12-13 62 views
1

J'utilise zend framework. J'ai un champ de texte qui est un champ obligatoire. J'ai aussi une case à cocher. Au clic de la case je veux cacher le champ de texte et enlever l'attribut obligatoire du champ de texte. Pour l'instant je suis usign jquery pour simplement masquer la div dans laquelle le champ de texte est placé mais j'ai eu une erreur de validation car le champ de texte est obligatoire.Enlever le est requis sur l'événement de clic dans le cadre de zend

Est-il possible de supprimer l'attribut obligatoire de textbox sur n'importe quel événement.

Quelqu'un peut-il m'aider s'il vous plaît sur cette question. Merci.

+0

Quel est ce 'attribute' obligatoire? – rahul

Répondre

1

Je ne pense pas que vous pouvez vraiment faire formulaire Zend validateurs dépendre d'événements JavaScript.
Mais ce que vous pouvez faire est de remplacer la méthode form::isValid(), de sorte que les validateurs seraient supprimés sur la base des données soumises

public function isValid($data) 
{ 
    if (empty($data['checkboxField'])) { 
     $this->getElement('textField')->removeValidator('NotEmpty'); 
    } 
    return parent::isValid($data); 
} 
+0

Merci pour la réponse. Exactement ce que je cherchais. – rasth

+0

Si cela vous a aidé, veuillez marquer la réponse comme acceptée :) – Vika

0

Si je vous comprends bien, vous pouvez définir required-false lors de l'instanciation validateur, par exemple:

$password1 = $this->addElement('password','password', array(
      'filters' => array('StringTrim'), 
      'validators' => array(array('StringLength', false, array(6, 20))), 
      'required' => false, 
      'label' => 'Password: ', 
      'description' => 'Password between 6 and 20 characters' 
)); 
+0

Je voulais que le requis soit faux seulement dans le cas où la case à cocher du formulaire est cochée. Lorsque la case n'est pas cochée, j'ai besoin d'être vrai. C'est possible?? – rasth