2012-02-17 33 views
0

私はPloneテンプレートで作業しています。現在、テンプレートの検索を実装しています。テンプレートには同じテンプレート、つまり同じページに送信するフォームがあります。Plone:フォームが提出されたかどうか確認してください。

ページ内のフォームが送信された場合にのみ、ページの特定の部分、つまり結果DIVを有効にする必要があります。私は、ページが提出されているかどうかを確認し、ページの特定の部分を表示する方法についてはわかりません。

私はを使用してthisのリンクを見ましたが、実際には役に立ちません。私がしなければならないことは、tal:conditionタグで行われると思います。

ご協力いただければ幸いです。その後、

答えて

2

あなたが隠しフィールドを追加することができ、例えば名前値=「1」と「submitedform」と、上の条件を作る:

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

私はそれを動作させるための方法を発見しました。

私はtal:conditionを使用し、フォーム提出時にリクエストオブジェクト内のデータを確認しました。

リクエスト・オブジェクトにあるもの調べるために、単にあなたのページに次のように置く:

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

注:requestオブジェクトが呼び出されたとき、それはデータの読み込み可能な、HTMLのバージョンをレンダリングします。私たちはHTMLをエスケープするのを防ぐために "構造"を使います。

私の場合、検索フォームが提出されたかどうかを確認する必要がありました。そこでDIVタグの内側で、クエリ文字列が空であるかどうかを確認しました。以下はコードのサンプルです。

<!-- 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> 

任意の変数を使用できます。私は単純に要求オブジェクトからQUERY_STRINGを使用することを選択しました。

これは完璧ではないかもしれませんが、他の人に指示を与えることを望みます。

+0

フォームにPOSTメソッドを使用すると、QUERY_STRINGは空になることに注意してください。 (:条件= "要求/ formsubmitted" 'TAL)より良いことのための'のフィールドおよび試験を使用します。 –

+0

潜在的に短いテスト: 'tal:condition ="リクエスト/ environ/QUERY_STRING "と' tal:condition = "not:request/environ/QUERY_STRING"。 –

+0

@MartijnPieters洞察をいただきありがとうございます – Frankline

関連する問題