- 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

