correction dispatch action
bonjour,
pour executer au choix 2 templates, j'ai effectuée ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<form name="searchform"
action="dispatch_action">
in
<select name="objects_selection">
<option value="obj1">obj1</option> <option value="obj2">obj2</option>
</select>
<label for="chk_0"> Details
<p>
<input type="checkbox" name="chk_0" id="chk_0" title="Request information" />
</p>
<p>
<input class="searchButton"
type="submit"
value="Search"
accesskey="accesskeys-search"
tal:attributes="tabindex tabindex/next"
i18n:attributes="value accesskey" /></p>
</form> |
si l'utilisateur selectionne un object dans la liste et coche la chekbox alors il fera apelle a "affiche_table" sinon "search".
et le code de ma dispatch_action est comme suit:
Code:
1 2 3 4 5 6
|
def dispatch_action(self,REQUEST) :
if REQUEST['chk_0'] :
return self.affiche_table.pt()
else :
return self.search.pt() |
mais j'ai le message d'erreur suivant:
Code:
1 2
|
RuntimeError: CMFPlone/skins/plone_forms/dispatch_action.py has errors. |
alors elle est ou ma faute?
Merci d'avance
tu n'as pas besoin de script
Tu appelles des méthodes de classes qui n'existe pas et tu invoques 'self' alors que tu n'as aucune instance, bref tu ne sais pas ce que tu fait, ni comment tu le fais !
L'infrmatique en général, et Zope en particulier ce n'est pas du loto.
Il faut te documenter, lire le code existant.
Parce que le temps que tu perds à tester des trucs au hasard, aurait été bien mieux employé à lire la doc des ZPT par exemple.
crées une page "rendu" que tu appelles depuis l' action de ton form dans ton portlet
voici le code de ta page "rendu"
Code:
1 2 3 4 5 6 7 8 9 10
|
<div tal:define="coche python:test(context.REQUEST.form.has_key('chk_0'),1,0)">
<div tal:content="structure here/affiche_table.pt"
tal:condition="coche"/>
<div tal:content="structure here/search.pt"
tal:condition="not:coche"/>
</div> |
l'idéal aurait d'utiliser les macros mais tant que tu n'auras pas lu la doc, ni testé les exemples qui vont avec ....
donc si coche ça t'affichera le contenu de ta page affiche_table.pt
sinon celui de search.pt
C'est bien ce que tu voulais non ?