Plone 4上具有灵活性的自定义AddForm模板

Plone 4上具有灵活性的自定义AddForm模板,plone,dexterity,Plone,Dexterity,我在让我的灵巧内容类型显示自定义添加表单时遇到问题。我已经在以前的产品中这样做了,但令人惊讶的是,我无法使用Plone 4.1和Plone.app.Dextrity 1.0.3来实现这一点 我的CrmContact内容类型位于package.name.types.contact.py中,其架构定义如下: from five import grok from zope import schema from zope.interface import implements from plone.d

我在让我的灵巧内容类型显示自定义添加表单时遇到问题。我已经在以前的产品中这样做了,但令人惊讶的是,我无法使用Plone 4.1和Plone.app.Dextrity 1.0.3来实现这一点

我的CrmContact内容类型位于package.name.types.contact.py中,其架构定义如下:

from five import grok
from zope import schema
from zope.interface import implements

from plone.directives import form, dexterity


class ICrmContact(form.Schema):
    """A contact item for the CRM"""

    title = schema.TextLine(
            title=_(u"Company name"),
    )

    ...

class CrmContact(dexterity.Container):
    implements(ICrmContact)


class Add(dexterity.AddForm):

    grok.context(ICrmContact)
    grok.name('package.name.contacts.types.contact')
    grok.template('add')
我的模板存在于包/名称/类型/联系人模板中。这是一个典型的模板。我知道它没有被呈现,因为它有一个虚拟节点,将使用tal:content调用一个不存在的方法,以引发异常;所以我确信模板本身不是问题所在

我的内容类型FTI在安装期间已正确注册,并且内容类型可用且可添加

最后,在profiles/default/types.package.name.types.contact.xml中:

<?xml version="1.0"?>
<object name="package.name.types.contact" meta_type="Dexterity FTI"
    i18n:domain="package.name" xmlns:i18n="http://xml.zope.org/namespaces/i18n">

    ...

    <!-- Method aliases -->
    <alias from="(Default)" to="(dynamic view)" />
    <alias from="edit" to="@@edit" />
    <alias from="sharing" to="@@sharing" />
    <alias from="view" to="(selected layout)" />

    <!-- Actions -->
    <action title="View" action_id="view" category="object"
        condition_expr="" url_expr="string:${object_url}" visible="True">
        <permission value="View" />
    </action>
    <action title="Edit" action_id="edit" category="object"
        condition_expr="" url_expr="string:${object_url}/edit" visible="True">
        <permission value="Modify portal content" />
    </action>
</object>

如何向自定义类型的添加表单提供自定义模板?

您应该删除行
grok.context(ICrmContact)

发件人:

还要注意,我们在这里没有指定上下文。添加表单始终为任何IFolderish上下文注册


我认为当你使用grok时,你必须将模板添加到一个“模板”文件夹中,而你似乎正在使用“联系人模板”作为目录;你用这个吗?那一页现在不见了。也许是这个?
(Pdb) getattr(self, 'grokcore.view.directive.template')
'add'