Plone中的自定义敏捷编辑表单模板?

时间:2012-08-27 15:38:40

标签: plone zope dexterity

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

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

我的目标:

  1. 对其进行编辑包装在一个裸模板中,该模板基本上只包含#content div中的内容。
  2. 我不仅仅想要一个展开的z3c.form渲染,我还需要一个最小的模板来包装它 - 只是没有库存Plone viewlet管理器和furntiture。
  3. 什么行不通:

    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中的过滤机制是有意义的。

1 个答案:

答案 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')