Bonjour à tous et à toutes !
Je manipule depuis peu le Frameword PHP Zend (version 1.11.11) qui se révèle être fort puissant, mais je rencontre depuis quelques jours quelques problèmes concernant la gestion des formulaires.
Voici le contexte.
J'ai une matrice qui permet la saisie d'un ensemble d'informations (identiques) pour x clients. Actuellement, ce x vaut 10, mais rien ne dit qu'il ne soit pas amener à évoluer. Afin (notamment) de permettre cette évolution future, j'ai créé un formulaire client classique qui contient l'ensemble des champs nécessaires. Dans mon controller, j'itère alors sur le nombre de clients à gérer, créer le formulaire pour chacun d'eux, et ajoute ce formulaire à un formulaire global avec addSubForm().
Le code ressemble donc à ceci :
Les instructions suivantes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $clients = array('clientA', 'clientB', 'clientC', ...); $combinedForm = new Zend_Form(); foreach ($clients as $client) { $form = new Application_Form_Form_Client(); $form->setElementsBelongTo($client); $form->setIsArray(true); $combinedForm->addSubForm($form, $client); } $combinedForm->addElement('submit', 'submit', array( 'label' => 'Test', )); if ($this->getRequest()->isPost() && $combinedForm->isValid($this->_getAllParams())) { Zend_Debug::dump($this->_getAllParams()); }
me permettent de structurer mes name de la façon suivante : clientX[champs], de manière à avoir des identifiants uniques accessibles après soumission.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $form->setElementsBelongTo($client); $form->setIsArray(true);
Et là est tout le problème.. Après soumission, lorsque j'affiche tous les paramètres de la request, cette dernière ne me retourne les données que du premier formulaire (donc du premier client)..
Et là pour le coup, j'avoue ne pas comprendre. Sachant que comme le montre le bout de code précédent, mon bouton submit est propre au formulaire global, et devrait donc soumettre toutes les données de l'ensemble des formulaires non ?
J'attends donc vos lumières pour m'aider sur ce problème car là, je sèche...
Merci à vous !
Partager