Plone 4上具有灵活性的自定义AddForm模板
我在让我的灵巧内容类型显示自定义添加表单时遇到问题。我已经在以前的产品中这样做了,但令人惊讶的是,我无法使用Plone 4.1和Plone.app.Dextrity 1.0.3来实现这一点 我的CrmContact内容类型位于package.name.types.contact.py中,其架构定义如下: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
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'