Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [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 ?

Reply #1 Posted by laurentj on 06/09/2009 10:45

Si tu penses qu'il y a bug, ouvre un ticket s'il te plait.

 
Page
  1. Re: getModifiedControls fonctionne-t-il avec des checkbox ?