2012-02-17 4 views
0

Je travaille sur un modèle Plone. Actuellement, j'implémente une recherche sur le modèle. Il y a un formulaire sur le modèle qui soumet au même modèle, c'est-à-dire la même page.Plone: ​​Vérifier si un formulaire a été soumis

J'ai besoin d'activer certaines parties de la page à afficher, c'est-à-dire les résultats DIV, uniquement lorsque le formulaire dans la page a été soumis. Je ne suis pas sûr de savoir comment vérifier si une page a été soumise et afficher certaines parties de la page.

J'ai regardé le lien this en utilisant form.submitted, mais ce n'est vraiment pas utile. Je suppose que tout ce que j'ai à faire sera fait en tal:condition tag.

Toute aide sera appréciée.

Répondre

2

Vous pouvez ajouter un champ caché, le nom, par exemple « submitedform » avec value = « 1 », puis, faire une condition:

request.get('submitedform', 0) 
-1

J'ai trouvé un moyen de le faire fonctionner.

J'ai utilisé un tal:condition et vérifié les données qui se trouvent dans l'objet de requête lors de la soumission du formulaire.

Examiner ce qui est dans l'objet de la demande, il suffit de mettre les éléments suivants sur votre page:

<div tal:replace="structure request" /> 

Note: lorsque l'objet de la demande est appelée, elle rend un lisible, la version HTML des données. Nous utilisons "structure" pour éviter d'échapper au HTML.

Maintenant, pour mon cas, j'avais besoin de vérifier si mon formulaire de recherche a été soumis. Donc, à l'intérieur de la balise DIV, j'ai vérifié si la chaîne de requête était vide ou non. Voici un exemple de code:

<!-- Form has been submitted --> 
<div tal:condition="python:request.environ.get('QUERY_STRING') != ''"></div> 

<!-- Form has not been submitted --> 
<div tal:condition="python:request.environ.get('QUERY_STRING') == ''"></div> 

Notez que vous pouvez utiliser n'importe quelle variable. J'ai simplement choisi d'utiliser le QUERY_STRING à partir de l'objet de requête.

Ce n'est peut-être pas parfait, mais j'espère qu'il donnera une direction à quelqu'un d'autre.

+0

Notez que si vous utilisez une méthode POST pour votre formulaire, alors QUERY_STRING va être vide. Mieux vaut utiliser un champ ' et tester pour cela (' tal: condition = "request/formsubmitted" '). –

+0

Test potentiellement plus court: 'tal: condition =" demande/environ/QUERY_STRING "' et 'tal: condition =" pas: demande/environ/QUERY_STRING "'. –

+0

@MartijnPieters Merci pour la perspicacité – Frankline

Questions connexes