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

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Posted by titof90 on 08/30/2010 01:33

Bonjour,

Je suis confronté à un problème qui je pense n'est pas bien complexe (mais il se fait tard et mon cerveau n'est plus très frais :-) )

Dans mon fichier xml, j'ai un contrôle de type checkboxes:

<checkboxes ref="type_aliment" required="true">
<code>
	<label>Aliments</label>
	<item value="boeuf">boeuf</item>
	<item value="poulet">poulet</item>
	<item value="veau">veau</item>
	<item value="thon">thon</item>
	<item value="truite">truite</item>
	<item value="carpe">carpe</item>
	<item value="sardine">sardine</item>
</checkboxes></code>

L'affichage de ce contrôle se fait sans problème dans mon template avec le code suivant :

<p>{ctrl_label 'type_aliment'}{ctrl_control 'type_aliment'}</p>

Cependant, je souhaiterais avoir un affichage plus propre au sein d'un tableau: la 1ere colonne "Animal" contiendrai les 3 premières checkboxes, la 2eme colonne "Poisson" contiendrai les 4 autres checkboxes

J'ai eu beau chercher la syntaxe pour récupérer les éléments d'une checkboxes, je n'ai pas trouvé. Je me doute qu'il s'agit d'un tableau par exemple type_aliment(1) mais tout ce que j'ai tenté à présent n'a pas fonctionné.

Merci d'avance pour votre aide

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #1 Posted by foxmask on 08/30/2010 06:46

Et pourquoi pas 2 checkboxes une viande une poisson?


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

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #2 Posted by titof90 on 08/30/2010 10:51

En fait, ma liste d'items est plus importante mais je n'ai pas tout mis pour ne pas surcharger. J'ai par exemple des légumes, desserts ...

J'ai mal présenter ce que je souhaite faire je pense, l'idée est de proposer 3 type de menus, chacun comportant des aliments spécifiques:

On aura par exemple:

Menu 1 :

viande | poisson | legumes | dessert

boeuf | carpe | ...

veau | truite | ...

L'utilisateur doit sélectionner au moins un des aliments mais peut très bien prendre du poisson et pas de viande.

ca fera donc quelque chose de la sorte:

<checkboxes ref="menu1" required="true">
<code>
	<label>Menu 1</label>
	<item value="boeuf">boeuf</item>
	<item value="poulet">poulet</item>
	<item value="veau">veau</item>
	<item value="thon">thon</item>
	<item value="truite">truite</item>
	<item value="carpe">carpe</item>
	<item value="sardine">sardine</item>
</checkboxes> <checkboxes ref="menu2" required="true">
	<label>Menu 2</label>
	<item value="lapin">lapin</item>
	<item value="faisan">faisan</item>
	<item value="sanglier">sanglier</item>
	<item value="thon">thon</item>
	<item value="crevette">crevette</item>
	<item value="thon">thon</item>
	<item value="sardine">sardine</item>
</checkboxes> </code>

Si je gère en checkboxes par type d'aliment, je ne peux plus utiliser la condition "required='true'" pour ma gestion des erreurs car cela impliquera que je coche au moins un aliment par catégorie.

Je préfère donc gérer une checkboxes par menu plutôt que par type d'aliment. Qui plus est, si je gere une checkboxes par type d'aliment, on peut imaginer le cas suivant:

le menu 1 comporte du veau, mais pas le menu 2. Je vais donc devoir afficher l'item "veau" de la checkboxes viande dans le menu 1 mais pas dans le menu 2. C'est pourquoi, je pense qu'une checkboxes par menu me semble le choix le plus judicieux.

Mais j'aimerais présenter un menu proprement en tableau, j'aurais donc besoin d'une boucle qui parcour par exemple les 3 premiers items pour la colonne viande, puis les 3 autres pour la colonne poisson etc ...

Est-il possible de faire cela ? Enfin dernière petite question, j'aimerais gérer l'affichage d'une checkbox par ligne et non pas de plusieurs checkbox sur la meme ligne. Faut-il gérer cela avec quelque chose du type {ifctrl 'type_aliment'} class="ctrl-type_aliment"{/ifctrl}> en mettant ce qui va bien dans la css pour un affichage par ligne ?

Merci pour ton aide

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #3 Posted by foxmask on 08/30/2010 18:28

Alors j'imaginais 2 choses pour constituer des menus (au sens gastronomique:) :

bon amusement :-)


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

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #4 Posted by titof90 on 08/30/2010 18:48

En fait Foxmask, je serais plutôt parti sur ta première solution. A savoir utiliser des DAO directement au sein du xml pour récupérer les différents items.

Le nombre de menu n'évoluera pas dans le temps, de même que les aliments présent dans le menu. C'est pour cela que la création de champs dynamiques ne peut pas s'appliquer dans mon cas.

Cependant, je suis toujours confronté au même problème, celui d'afficher des checkboxes trier par catégories. Et pour cela je ne vois que le fait de les récupérer de la façon qu'on récupère les valeurs des checkboxes en php, quelque chose du genre menu1/1,4,6/ (intépréter les slashs comme des crochets ouvrant et fermant) qui m'afficherai les checkboxes 1, 4 et 6 du menu 1.

Cela n'est pas possible avec Jelix ?

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #5 Posted by foxmask on 08/30/2010 18:51

si mais alors avec une datasource pas une dao, comme cela on retourne les données comme on veut et la checkbox est "peuplée" comme on le veut


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

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #6 Posted by titof90 on 08/30/2010 21:34

Je vais me tourner vers une datasource alors :-) Merci pour ton aide Foxmask

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #7 Posted by foxmask on 08/30/2010 22:19

Un ultime détail et exemple.

Mais avant d'embrouiller (potentiellement les choses) une explication :)

Une checkbox peut afficher des données statiques comme celles que tu as mises dans cette discussion, ou dynamiques, provenant d'une datasource type DAO ou type classe.

une datasource type "DAO" permet d'exploiter une DAO existante et retournées le jeu de données tel quel sans en filtrer le contenu finement.

une datasource type "classe" permet d'exploiter des données de sources diverses (dont une DAO justement on va voir un exemple :) et retournées le jeu de données avec toutes les règles de gestion de son choix.

Ce dernier cas est exploité sur le forum jelix actuel. Dans la liste déroulante "Se rendre à ce forum", on ne peut pas se contenter de récupérer la liste des forums "sauf" le forum courant. Il faut filtrer les permissions d'accès à des forums qui ne sont accessibles qu'à ceux ayant une ACL particulière. Donc on récupère les données d'une DAO puis, on applique ses règles de gestion, et on retourne les données.

Tout cela est illustré ici, dans le code source de la classe suivante

En espérant avoir éclairé la lanterne :)


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

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #8 Posted by laurentj on 08/31/2010 11:59

Salut,

en fait ce groupement peut se faire avec les dernières nightly du futur jelix 1.2., grâce avec la nouvelle balise itemsgroup.

<checkboxes ref="type_aliment" required="true">
<code>
   <label>Aliments</label>
   <itemgroup label="viande">
      <item value="boeuf">boeuf</item>
      <item value="poulet">poulet</item>
      <item value="veau">veau</item>
   </itemgroup>
   <itemgroup label="Poissons">
	<item value="thon">thon</item>
	<item value="truite">truite</item>
	<item value="carpe">carpe</item>
	<item value="sardine">sardine</item>
   </itemgroup>
</checkboxes> </code>

Par défaut, ça génère des fieldsets autour de chaque groupe de checkbox.

On peut utiliser ça aussi pour <radiobuttons>, <menulist> et <listbox>.

  [Opened] Afficher des valeurs particulieres d'un controle checkboxes

Reply #9 Posted by titof90 on 09/04/2010 20:47

Un grand merci à vous 2. Le problème a été résolu en utilisant les itemsgroups présent dans la dernière nightly.

 
Page
  1. Afficher des valeurs particulieres d'un controle checkboxes