• Condition en ZPT
Réponses:
10
Visites:
0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum.
Inscrivez-vous maintenant
• Condition en ZPT
Posté par
thipyt
le
28/08/2008 17:37
Bonjour,
Je réalise un formulaire dans une ZPT et voudrais, en fonction du groupe auquel appartient mon utilisateur, envoyer un mot clé correspondant. J'ai écris ceci : code: <body tal:define="groupe python:here.sources.group_user_ext()">
L'affichage du groupe me permet simplement de vérifier que je le récupère correctement, ce qui est le cas. Le code s'exécute correctement, mais c'est comme-ci la condition était fausse, alors que ça ne devrait pas être le cas. J'ai testé avec "test(groupe)" uniquement, et cela fonctionne, c'est donc ma comparaison "groupe == 'clients'" qui ne passe pas, mais je ne vois pas pourquoi... A noter que le nom de groupe que je récupère dans mon script externe (que j'appelle dans la 1ere ligne) me retourne le nom du groupe sous cette forme: code: ['clients']J'ai donc essayé de tester cette même forme, avec crochets et apostrophe, mais pas plus de résultat... Serais-je passé à côté de quelque chose, surement tout bête ? |
-
• Re: Condition en ZPT
Posté par gawel le 28/08/2008 17:43groupe est une liste et devrait s'appeller groupes. Après:
tal:condition=" python: 'clients' in groupes " -
• Re: Condition en ZPT
Posté par thipyt le 28/08/2008 18:24C'est une liste, évidemment !
Merci de ton aide, ça fonctionne correctement comme ça.
Je profite du topic pour deux autres petites choses :
Comme vous l'avez compris, je travaille dans une ZPT alors et je n'arrive pas à faire des choses très simples en php, à savoir:
- Le "switch case" pour éviter d'avoir à faire des cascades de tests avec la méthode précédente.
- La récupération de variable passées dans le formulaire par la méthode POST. Habituellement, je récupère ça avec: $_POST['ma_donnee']
Mais là, j'appelle une autre ZPT lorsque je définit mon FORM et donc ça ne passe pas...
Suis-je encore une fois à la masse ? :-S -
• Re: Condition en ZPT
Posté par gawel le 28/08/2008 18:34Il n'y a pas de switch en python. Tu l'as dans l'os.
Normalement si tu construit bien la page ou que tu utilise des macros, t'as pas 50 imbrications de toute facon.
Pour ce qui est du POST, une variable appelée request est disponible dans la zpt. Elle contient à la fois le POST et le GET.
python: request.form.get( 'madonnee', valeurpardefaut )
ou
tal:define="madonnee request/madonnee|nothing" -
• Re: Condition en ZPT
Posté par ychaouche le 28/08/2008 18:41tu peux passer des paramètres à ta PT que tu récupères avec tal:define="monArgument options/unParametreVenuDailleurs"
ton formulaire peux appeler ta pt comme ça :
python: here.chemin.vers.maPt(monArgument=unParametre) -
• Re: Condition en ZPT
Posté par thipyt le 29/08/2008 10:48Ca roule, j'arrive à récupérer ma donnée. Merci à tout les deux !
Je n'ai encore jamais utilisé les macros mais je vais vous donner un exemple concret de ce que j'essaie de faire à différents endroits de mon formulaire:
Un élément de formulaire, ici une liste de choix, me permet de d'envoyer un mot clé utilisé pour récupérer les objets de mon ZCatalog possédant ce mot clé.
Ca fonctionne à ce niveau là, mais mon objectif est maintenant de tester le résultat de ce choix, pour définir un "type" et l'envoyer à ma ZPT affichant les résultat, de façon à ce que je puisse par exemple afficher un titre portant le nom de la catégorie correspondante. Ici: Mécanique, Electrique, Informatique etc.
code:<SELECT name="Keywords">
<OPTION VALUE="">Toutes</OPTION>
<OPTION VALUE="KWDMECA">Mécanique</OPTION>
<OPTION VALUE="KWDELEC">Electrique</OPTION>
<OPTION VALUE="KWDAUTO">Automatisme</OPTION>
<OPTION VALUE="KWDINFO">Informatique</OPTION>
</SELECT>
<span tal:condition="python: test('Keywords' == 'KWDMECA')">
<INPUT type="hidden" name="Type" value="mécanique">
</span>
autres tests...
Quand je parlais de tests multiples, on retrouverais ça ici car je dois tester chaque type l'un après l'autre, ce qui n'est surement pas idéal !
Les macros pourraient m'aider à éviter ce genre de chose ?
Pour le code en lui même, étant donné que celui-ci ne fonctionne pas, j'ai essayé de faire un define avec mon "Keywords", en espérant récupérer le résultat de ma liste de formulaire, pour ensuite le tester, mais ça ne donne rien non plus.
Pendant que j'y pense, je me demandais s'il était possible d'envoyer plusieurs données via les "value" de mon SELECT ? -
• Re: Condition en ZPT
Posté par gawel le 29/08/2008 11:17primo, arrêtes d'utiliser test(), ça sert a rien.
"python: truc == machin" ça marche très bien
ensuite, tu t'emmerdes. mieux vaut faire ceci (en gros):
code:
<select name="type" tal:define="value request/value|nothing">
<option value="truc" tal:attributes="selected python: 'truc' == value and 'selected' or None">Truc</option>
</select>
Je vois pas pourquoi tu veux duppliquer le champ. -
• Re: Condition en ZPT
Posté par ychaouche le 29/08/2008 11:51Je ne pense que c'est ce qu'il veut faire.
thipyt, tu l'ignorais peut être, mais ta deuxième ZPT peut récuperer ce qu'il y a dans le select directement dans la variable request/Keywords (ou request/form/Keywords je sais pas trop) . En effet, la valeur de ton select est celle de l'option choisie. -
• Re: Condition en ZPT
Posté par thipyt le 29/08/2008 12:18En fait, je ne veux pas dupliquer le champs, je veux passer deux choses différentes, mais dépendantes l'une de l'autre : le mot clé de ma catégorie (KWDMECA) et le nom de cette catégorie (mécanique).
C'est pourquoi, je me demandais si dans un SELECT de ce type, ou plus généralement dans un FORM quel que soit son type, il était possible d'avoir plusieurs valeurs dans 'name' et/ou 'value'.
Ychaouche, effectivement je récupère ce qu'il y a dans le select, le résultat, le "value" de l'option choisie en somme. Je suis d'accord avec ça et j'étais parvenu à le faire grâce à vos messages d'hier soir.
Maintenant, en fonction de ce résultat, donc de ce value, je veux récupérer un mot (mécanique, électrique...), qui est d'ailleurs celui que j'affiche à l'écran dans ma liste.
Comme je n'ai pas l'impression qu'il soit possible de récupérer ce qui est affiché entre les balises OPTION, le texte HTML pur correspondant au choix effectué, c'est pour cela que je veux tester derrière le "value" sélectionné, donc le contenu du SELECT, pour envoyer, de manière cachée, un "type" qui contiendra le nom de ma catégorie écrit en bon français et non pas le mot clé KWDMECA, KWDELEC... (qui celui-ci m'est utile pour ma recherche dans le ZCatalog)
J'espère être un peu plus clair dans mes explications... -
• Re: Condition en ZPT
Posté par ychaouche le 29/08/2008 13:45Pourquoi ne pas faire un dictionnaire où chaque clé représenterait une catégorie (KWDMECA) et où les valeurs seraient les intitutlés (mécanique...) ?
Pour avoir l'intitulé tu n'as plus qu'à faire dicooù clé serait donc request/Keywords -
• Re: Condition en ZPT
Posté par ychaouche le 29/08/2008 13:56arf : dico[Keywords]






