在Plone中自定义Dexterity编辑表单模板



我正在开发一个Plone插件,该插件需要为Dexterity内容重新蒙皮备用编辑表单。我需要能够在AJAX覆盖中只显示编辑表单的一部分(使用JQuery UI,而不是JQuery工具,所以在服务器端这样做似乎比在JavaScript中过滤更合理)**。

Dexterity开发人员指南中的文档似乎表明我可以使用宏创建自定义模板。不过,这一部分缺少了一些东西——对于那些不使用grok绑定视图的人来说,可能是一些关键的上下文,但可能还有其他内容。创建仅模板视图失败(显然无法从视图类中找到名称),并且尝试将ZCML中的自定义模板绑定到股票视图类或其子类都失败(为了支持股票模板而忽略该模板)。

我的目标:

  1. 对其进行编辑,该编辑被封装在一个裸模板中,该模板基本上只包含#contentdiv中的内容
  2. 我不想仅仅是一个未包装的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')

最新更新