7

我正在开发一个 Plone 插件,该插件需要为 Dexterity 内容重新换肤的备用编辑表单。我需要能够在 AJAX 覆盖中仅显示编辑表单的一部分(使用 JQuery UI,而不是 JQuery 工具,因此在服务器端执行此操作似乎比在 JavaScript 中过滤更合理)**。

Dexterity Developer's Guide中的文档似乎表明我可以使用宏自定义模板。不过,本节缺少一些东西——对于那些不使用 grok 绑定视图的人来说,可能是一些关键的上下文,但也许是别的东西。创建仅模板视图失败(显然无法从视图类中找到名称),并且尝试将 ZCML 中的自定义模板绑定到股票视图类或它的子类都失败(模板被忽略以支持库存模板)。

我的目标:

  1. 对此进行编辑,该编辑包含在一个裸模板中,该模板基本上只包含 #content div 中的内容。
  2. 我不只想要一个未包装的 z3c.form 渲染,我还需要一个最小的模板来包装它——只是不需要库存的 Plone viewlet 管理器和家具。

什么不起作用:

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 的基于敏捷类型的兼容性。Solgema.fullcalendar 将 jQuery UI 用于弹出窗口,而不是 plone.app.jquerytools 覆盖帮助器;为了保持一致性,拥有这个最小视图而不是试图模仿普通 Plone 覆盖的 JavaScript 中的过滤器机制是有意义的。

4

1 回答 1

9

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')
于 2012-08-27T16:28:09.047 回答