Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjours après de multiple recherche, je n'ai pas trouvé comment résoudre mon problème.
Voila, j'ai un formulaire et je veux ajouter des éléments en fonction de condition saisie sur un formulaire précédent. Pour réaliser j'ai mis en place un test avec un SI.
if($attrib4n != null) { if($attrib4t != null) { $attrib4 = new Zend_Form_Element_Select('DOC_ATTRIB4'); $attrib4->setMultiOptions($attrib4t); $attrib4->setLabel($attrib4n); $attrib4->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty',true); } else { $attrib4 = new Zend_Form_Element_Text('DOC_ATTRIB4'); $attrib4->setLabel($attrib4n); $attrib4->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty',true); } $attrib4 ->setDecorators($elementDecorators); $this->addElements(array($attrib4)); }
L'affichage se fait exactement comme je veux. Mais je ne sais pas pourquoi, lorsque j'envoie mon formulaire, tous les champs sauf celui la s'enregistrent dans ma bdd.
Une personne aurait une idée d'où peut venir ce problème.
Dernière modification par kev0783 (16-03-2011 10:06:17)
Hors ligne
maintenant je sais que le problème vient que mon élément est dans une condition "if" car ce code marche.
$attrib3 = new Zend_Form_Element_Select('DOC_ATTRIB3'); $attrib3->setMultiOptions($attrib3t); $attrib3->setLabel($attrib3n); $attrib3->setRegisterInArrayValidator(false) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty',true); $this->addElements(array($attrib3)); $attrib3 ->setDecorators($elementDecorators);
alors que celui la ne marche pas
if($attrib3n != null && $attrib3t != null) { $attrib3 = new Zend_Form_Element_Select('DOC_ATTRIB3'); $attrib3->setMultiOptions($attrib3t); $attrib3->setLabel($attrib3n); $attrib3->setRegisterInArrayValidator(false) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty',true); $this->addElements(array($attrib3)); $attrib3 ->setDecorators($elementDecorators); }
Pour le deuxième l'affichage se fait correctement, donc mon élément est bien ajouté mais la valeur que je saisie n'est pas enregistrée dans la bdd.
Personnne n'a une idée?
Hors ligne
Personne sait pourquoi lorsque j'encadre mon élément par un IF, je ne peux plus enregistrer ma valeur dans ma bdd ?
Hors ligne
Peut être un piste,
le passage des paramètres $attrib3n & $attrib3t au formulaire:
exemple :
// l'appel $form = new Form($this->_getParam('attrib3n'), $this->_getParam('attrib3t'));
Dans ce cas lorsque tu arrive sur cette page avec tes paramètres en GET ou POST ils sont effectivement présents, hors lorsque que tu POST ton formulaire ils ne le sont plus donc la condition n'est plus remplis pour ces éléments.
Dans ce cas tu peux ajouter un statu à la création:
// l'appel depuis le premier formulaire $form = new Form($this->_getParam('attrib3n'), $this->_getParam('attrib3t')); // construteur du formulaire public function __construct($attrib3n, $attrib3t, $state='create'){ ... if(($attrib3n != null && $attrib3t != null) || $state === 'post') // dans ce cas la condition passera si le @state est égale à "post" ... } // appel lors du post $form = new Form($this->_getParam('attrib3n'), $this->_getParam('attrib3t'), 'post');
Ce ne sont que des suppositions car le code n'est pas complet.
Hors ligne
Merci Dede de ta réponse mais ca ne peut pas être ca. Je n'ai pas posté le code entier car il y a 450 ligne. ^^
Car tout d'abord mais variable $attrib3n & $attrib3t sont initialisées dans mon formulaire.
Ensuite les variables sont bien initialisées car mon élément est bien ajouté au formulaire et les valeurs dans mon select sont bonnes. L'ajout de mon élément ce fait dans mon IF .
Pas d'autre idée???
Hors ligne
Essaie un var_dump() de ta variable avant le IF au moment ou tu post le formulaire voir ce que ça donne.
Hors ligne
Pages: 1