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

  [Opened] [Résolu] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Posted by yebmetch on 01/19/2012 12:56

bonjour à tous, comment faire pour faire une liste déroulante dépendant d'une autre liste du même formulaire?

à cette question j'ai trouvé à mon avis une réponse dans la doc:

Dépendance avec un autre champs de saisie
Bien souvent, on veut pouvoir indiquer cette valeur de manière dynamique, et souvent, provenant d’un autre champs de saisie. Un exemple : une liste de ville qui dépend du choix dans une liste de département.
Plutôt que d’utiliser criteria, vous utiliserez l’attribut criteriafrom, où vous indiquerez l’identifiant (attribut ref) de ce champ de saisie pour lequel il faut récupérer la valeur :

<menulist ref="catlist">
...
</menulist>
<menulist ref="conf">
<datasource dao="testapp~config" method="findByCat" criteriafrom="catlist"
labelproperty="cvalue" valueproperty="ckey"/>
</menulist>

j'ai essayé et ça ne marche pas comme indiqué. alors je me pose les question suivantes avant de poussuivre un débogage:

  • est-ce que la methode findByCat est une méthode qu je doit définir moi même?
  • ma compréhension du "supra AJAX" avec les formulaires dynamique est fausse?

  [Opened] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Reply #1 Posted by laurentj on 01/19/2012 13:36

Bonjour,

est-ce que la methode findByCat est une méthode qu je doit définir moi même?

Oui, tu dois indiquer la méthode de ta dao, qu'il faut utiliser pour remplir la listbox. idem pour labelproperty, valueproperty etc.. bref, tout les attributs de datasource, tu dois les renseigner en fonction de ta dao

ma compréhension du "supra AJAX" avec les formulaires dynamique est fausse?

quelle compréhension ? je ne comprend pas ta question. Si il s'agit de savoir si il faut utiliser ce que tu as trouvé dans la doc pour faire une liste déroulante qui en dépend d'une autre, alors oui, c'est ce qu'il faut utiliser.

  [Opened] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Reply #2 Posted by yebmetch on 01/19/2012 18:44

quelle compréhension ?

faire une liste déroulante qui en dépend d'une autre, sans rechargement de la page.

J'ai créer une méthode qui marche dans mes controleur mais elle ne marche pas dans mon formulaire dynamique. voici ma méthode dans le Dao je cherche la bête dans mon code et je ne vois pas pour le moment:

<method name="findByCat" type="php">
            <parameter name="id" />
           <body><![CDATA[
		$sql =" SELECT* FROM amis WHERE id_rs=";
        $sql .=$this->_prepareValue($id,'integer');
        $sql .=" ORDER BY nompre_amis ASC";
        $rs = $this->_conn->query($sql);
        $rs->setFetchMode(8,$this->_DaoRecordClassName);
        return $rs;
            ]]></body>
        </method>

lorsque je remplace dans ma methode $id par une valeur fixe la liste est alimentée. des conseils avec la maniere aussi si possible.

  [Opened] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Reply #3 Posted by foxmask on 01/19/2012 23:17

Bonsoir, Le raisonnement est bon, le lien dans la doc correct mais pas son application dans la dao.

d'après votre code PHP, on peut faire extrêmement simplement sans passer par un methode PHP. avec un paramètre , classique :

  <method type="select" name="findByCat" > 
     <parameter name="id"/>
     <conditions>
      <eq property="id" expr="$id"/>
     </conditions>
  </method>

@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Reply #4 Posted by yebmetch on 01/20/2012 09:29

OK, j'ai fais ça et c'est le même résultat ça marche dans mon contrôleur mais pas dans le formulaire et lorsque je remplace id par une constante ça marche, comme si la méthode ne recevait pas d'argument. voici ce qui figure dans mon fomulaire:

<menulist ref="id_fam" >
	<label>famille</label>
	<emptyitem> -- selectionnez la famille -- </emptyitem>
	<datasource dao="client~famille" method="findAll" labelproperty="nom_fam" valueproperty="id_fam"/>
</menulist>
<menulist ref="id_enf" required="true">
	<label>Interlocuteur</label>
	<emptyitem> -- selectionnez l'enfant -- </emptyitem>
	<datasource dao="client~enfant" method="findByCat" labelproperty="nompre_enf" valueproperty="id_enf" criteriafrom="id_fam"/>
</menulist>

dans ma dao enfant.dao.xml:

<method type="select" name="findByCat" > 
     <parameter name="id"/>
     <conditions>
      <eq property="id_fam" expr="$id"/>
     </conditions>
  </method>

  [Opened] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Reply #5 Posted by laurentj on 01/20/2012 13:08

Regarde dans les log si tu n'aurais pas des erreurs se produisant lors de la récupération du contenu ajax, et aussi dans la console javascript du navigateur.

  [Opened] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Reply #6 Posted by yebmetch on 01/23/2012 09:42

Il n'y avait rien dans le log, j'ai constaté que la liste fonctionnait normalement lorsque j'ai chargé le repertoire /lib/jelix-wwww dans le repertoire wwww de mon appli en le renommant jelix (indication donné par un pote). je crois que j'ai rattrapé beaucoup de chose par cette action. merci à tous pour votre soutien.

  [Opened] formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes

Reply #7 Posted by foxmask on 01/23/2012 10:52

forcément sans le javascript jforms-jquery.js fourni par ce dossier ca marche moins bien ;)


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

 
Page
  1. formulaires dynamique probleme avec <datasource/> liste deroulante dépendantes