Рабочая контактная форма Plone в main_template.pt - PullRequest
3 голосов
/ 13 сентября 2011

Я пытаюсь обработать контактную форму, вставленную в plone, в main_template моего сайта.Я делаю так, чтобы функциональность, присутствующая в навигационной кнопке «войти в контакт» на этом сайте , работала в режиме Plone.Мой подход к этому был немного переработать contact-info.cpt , чтобы сделать его макросом, и использовать этот макрос в main_template.pt.Я получаю LocationError, когда пытаюсь просмотреть любую страницу на моем сайте, если только я не удаляю строку tal:define="errors options/state/getErrors" из contact-info.cpt.

Это - ошибка, которую я получаю с этимстрока в коде.Если я удалю эту строку, страница будет отображаться и будет выглядеть именно так, как я хочу, но при отправке формы произойдет ошибка. Это - ошибка в этой ситуации.Я в основном в тупике в обеих ситуациях и буду признателен за любой совет.

ОБНОВЛЕНИЕ (решение, которое я использовал):

Просто хотел опубликовать обновление с информацией о том, как я на самом деле заставил это работать.Информация от Martijn Pieters очень помогла понять, почему она не работает, но я действительно не был в состоянии начать работать оттуда.Я остановился на jQuery, чтобы заставить это работать в site_actions и в моем собственном выпадающем списке.Я обернул содержимое формы между тегами <metal:main> с помощью div, который я дал простому идентификатору «contact-info».Затем в основной шаблон я также ввел общий div с простым идентификатором «load-area».Последняя часть головоломки состояла в том, чтобы изменить мой файл contact.js на contact.js.pt и ввести следующие 3 строки:

  <tal:block define="portal_url context/@@plone_portal_state/portal_url">
  jq('#load-area').load('<span tal:replace="portal_url"></span>/contact-info #contact-info');
  </tal:block>

Мысль, что я должен опубликовать это дело, может позже кому-нибудь еще помочь.

Ответы [ 2 ]

4 голосов
/ 13 сентября 2011

Вы не можете использовать шаблон страницы контроллера (.cpt) в качестве макроса без изменений.

Прежде всего, скрипт Python для контроллера ожидает несколько параметров в своей «среде» (структура options/state - один из них), которых вы не используете при повторном использовании его операторов TAL. Вам придется переделать шаблон, чтобы не полагаться на эти части.

Во-вторых, это HTML-форма, и для формы требуется цель, на которую отправляются данные. В шаблоне страницы контроллера это контролируется с помощью файла .metadata, вам нужно явно установить его цель.

0 голосов
/ 15 сентября 2011

try

http://svn.quintagroup.com/products/quintagroup.portlet.pfg/trunk/

, кажется, не поддерживается, хотя

в сочетании с PloneFormGen вы можете создать контактную форму и показать ее в виде портлета

...