编程语言
首页 > 编程语言> > python-将Plone联系表单转换为main_template.pt

python-将Plone联系表单转换为main_template.pt

作者:互联网

我正在尝试使用联系表单,该联系表单已添加到我网站的main_template中.我这样做是为了使在this site上的“获取联系”导航按钮中显示的功能可以在工作簿设置中使用.我这样做的方法是稍微修改contact-info.cpt使其成为一个宏,然后在main_template.pt中使用该宏.尝试查看网站上的任何页面时都会收到LocationError,除非我从contact-info.cpt中删除tal:define =“ errors options / state / getErrors”行.

This是我在代码中使用该行时遇到的错误.如果我删除该行,页面将呈现并实际上完全符合我想要的样子,但是在提交表单时会出错. This是这种情况下的错误.我基本上在这两种情况下都很困惑,不胜感激.

UPDATE(我使用的解决方案):

只是想发布有关我实际上是如何工作的更新.马丁·彼得斯(Martijn Pieters)提供的信息对于理解为什么不起作用非常有帮助,但是我真的不打算从那里开始工作.我最终还是依靠jQuery来使它在site_actions和自定义下拉列表中起作用.我将表单的内容包装在< metal:main>之间.我给了一个简单的ID“ contact-info”的div标签.然后在主模板中,我还输入了一个通用div,其简单ID为“ 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>

以为我应该发布此邮件,以防以后可以帮助其他任何人.

解决方法:

您不能将“控制器页面模板”(.cpt)用作宏,但不要更改.

首先,Controller Python脚本期望在它的“环境”中使用一些参数,而这些参数在重复使用TAL语句时是不存在的.您必须重新设计模板以不依赖那些部分.

其次,这是HTML表单,并且表单需要目标才能将其数据发送到该表单.在控制器页面模板中,这是由.metadata文件控制的,您必须明确设置其目标.

标签:python,plone
来源: https://codeday.me/bug/20191102/1989720.html