我正在开发一个Plone插件,需要为Dexterity内容重新设置皮肤替代编辑表单。我需要能够在AJAX覆盖中仅显示编辑表单的一部分(使用JQuery UI,而不是JQuery工具,因此在服务器端执行似乎比在JavaScript中过滤更合理)**。
来自Dexterity Developer's Guide的文档似乎表明我可以使用宏来创建自定义模板。但是,本节中缺少一些东西 - 对于不使用grok来绑定视图的人来说可能是一些关键的上下文,但也许还有其他东西。创建一个仅模板的视图失败(显然无法从视图类中找到名称),并且尝试将ZCML中的自定义模板绑定到stock视图类或它的子类都失败(忽略模板以支持股票模板)。
我的目标:
什么行不通:
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中的过滤机制是有意义的。
答案 0 :(得分: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')