- 1
[Opened] getModifiedControls fonctionne-t-il avec des checkbox ?
Posted by PomCompot on 06/08/2009 14:34
Bonjour,
Je tente désespérément de faire fonctionner getModifiedControls avec un formulaire contenant des checkbox. J'ai bien vu le bug suivant : http://developer.jelix.org/ticket/772. Utilisant la version 1.1.2, je ne devrai pas en pâtir.
Pourtant, il semble bien en consultant le code que le problème subsiste. En effet, cette méthode effectue un array_diff_assoc entre originalData et data. Or, dans le cas où le formulaire contient des choix multiples, ceux-ci apparaissent dans chacun de ces deux tableaux en tant que tableaux imbriqués. Or, il est bien précisé dans la documentation de PHP que le array_diff_assoc ne marche pas de manière récursive. On n'obtient effectivement pas le bon résultat.
Ci-dessous mon code au cas où j'ai fait une boulette : Avant l'affichage du formulaire :
jForms::destroy(self::SELECTION_MODELE_DECISION_FORM_NAME, $noeudArbre->getIdClasse()); $form = jForms::get(self::SELECTION_MODELE_DECISION_FORM_NAME, $noeudArbre->getIdClasse()); if ($form == null) { $form = jForms::create(self::SELECTION_MODELE_DECISION_FORM_NAME, $noeudArbre->getIdClasse()); } $form->initControlFromDao('idModele', 'arbre~modele_arbre', array($noeudArbre->getIdClasse()), array('idClasse', 'idModele')); $form->initModifiedControlsList(); $this->_tpl->assign('formulaire', $form);
Récupération du formulaire :
$reponse = $this->getResponse('htmlfragment'); $idClasse=$this->param('idClasse'); $form = jForms::fill(self::SELECTION_MODELE_DECISION_FORM_NAME, $idClasse); if ($form !== null && $form->check()) { $listeModeles = $form->getModifiedControls(); [...] }
La déclaration de formulaire en XML :
<?xml version="1.0" encoding="UTF-8"?> <form xmlns="http://jelix.org/ns/forms/1.1"> <checkboxes ref="idModele"> <label locale="backoffice~arbre.infos.modelesCalcul.intitule" /> <datasource dao="arbre~decision" method="findAll" labelproperty="modeleCalcul" /> </checkboxes> <submit ref="_submit"> <label locale="backoffice~arbre.infos.modelesCalcul.validerChoix" /> </submit> </form>
J'ai beau cocher de nouvelles checkbox et en décocher d'autres, je n'obtiens aucun contrôle modifié ci ce n'est le submit. Pourtant, en debug, data et originalData contiennent bien des sous-tableaux différents pour les checkbox idModele.
Merci d'avance.
[Opened] Re: getModifiedControls fonctionne-t-il avec des checkbox ?
Posted by laurentj on 06/09/2009 10:45
Si tu penses qu'il y a bug, ouvre un ticket s'il te plait.
- 1