我正在开发一个Plone插件,该插件需要为Dexterity内容重新蒙皮备用编辑表单。我需要能够在AJAX覆盖中只显示编辑表单的一部分(使用JQuery UI,而不是JQuery工具,所以在服务器端这样做似乎比在JavaScript中过滤更合理)**。
Dexterity开发人员指南中的文档似乎表明我可以使用宏创建自定义模板。不过,这一部分缺少了一些东西——对于那些不使用grok绑定视图的人来说,可能是一些关键的上下文,但可能还有其他内容。创建仅模板视图失败(显然无法从视图类中找到名称),并且尝试将ZCML中的自定义模板绑定到股票视图类或其子类都失败(为了支持股票模板而忽略该模板)。
我的目标:
- 对其进行编辑,该编辑被封装在一个裸模板中,该模板基本上只包含#contentdiv中的内容
- 我不想仅仅是一个未包装的z3c.form渲染,我也需要一个最小的模板来包装它——只是不需要库存的Plone viewlet管理器和furnture
什么不起作用:
from plone.dexterity.browser.edit import DefaultEditForm
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class MyEditForm(DefaultEditForm):
index = ViewPageTemplateFile('my_edit_template.pt')
等效的ZCML(用运行时魔术定义索引)在这里也不起作用。
如何将自定义模板插入编辑表单?
**我正在研究Solgema.fullcalendar与plone.app.event的基于Dexterity的类型的兼容性。Solgema.fullcalendar对弹出窗口使用jQuery UI,而不是plone.app.jquerytools覆盖助手;为了保持一致性,有这个最小的视图是有意义的,而不是试图模仿普通Plone覆盖的JavaScript中的过滤机制。
z3c.form将模板作为template
属性查找,因此您需要将自定义模板分配给编辑表单子类的template
属性,而不是index
(这是模板ZCML属性放置的位置)。
from plone.dexterity.browser.edit import DefaultEditForm
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class MyEditForm(DefaultEditForm):
template = ViewPageTemplateFile('my_edit_template.pt')