2012-02-17 3 views
0

Я работаю над шаблоном Plone. В настоящее время я реализую поиск по шаблону. На шаблоне есть форма, которая отправляется на тот же шаблон, то есть на ту же страницу.Plone: ​​Проверьте, была ли отправлена ​​форма

Мне нужно включить определенные части страницы для просмотра, то есть результаты DIV, только при отправке формы на странице. Я не уверен, как проверить, была ли страница отправлена ​​и отобразить определенные части страницы.

Я просмотрел this ссылку на использование form.submitted, но это действительно не помогает. Я предполагаю, что все, что мне нужно сделать, будет сделано в теге tal:condition.

Любая помощь будет оценена по достоинству.

ответ

2

Вы можете добавить скрытое поле, имя, например «submitedform» со значением = «1», а затем сделать состояние на:

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

Я нашел способ, чтобы заставить его работать.

Я использовал tal:condition и проверял данные, находящиеся внутри объекта запроса, после отправки формы.

Для того, чтобы разобраться, что в объекте запроса, просто поместите следующий на странице:

<div tal:replace="structure 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 будет пустым. Лучше использовать поле ' и проверить его (' tal: condition = "request/formsubmitted" '). –

+0

Потенциально более короткий тест: 'tal: condition =" request/environ/QUERY_STRING "и' tal: condition = "not: request/environ/QUERY_STRING" '. –

+0

@MartijnPieters Спасибо за понимание – Frankline

Смежные вопросы