2011-11-10 65 views
4

我在使我的敏捷內容類型顯示自定義添加表單時遇到了問題。我已經在之前的產品中完成了這項工作,但令人驚訝的是,我無法使用Plone 4.1和plone.app.dexterity 1.0.3來完成此操作。Plone 4上的靈巧自定義AddForm模板

My 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') 

我的模板位於package/name/types/contact_templates中。這是一個典型的模板。我知道它沒有被渲染,因爲它有一個虛擬節點,它會使用tal:content來調用一個不存在的方法,以便引發一個異常;所以我確定模板本身不是問題。

我的內容類型FTI在安裝過程中被正確註冊,並且內容類型可用且可添加。

最後,在配置文件/默認/ 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> 

無關,但也許我要補充的東西在這裏...

我想我正如你所看到的,遵循正確的程序,但我仍然無法實現它的工作。

我知道類Add是獲取實例,因爲如果我提供了一個updateWidgets()方法並插入一個斷點,它會被調用;當我反思對象時,self.template是None;即使:

(Pdb) getattr(self, 'grokcore.view.directive.template') 
'add' 

如何向自定義類型的添加窗體提供自定義模板?

+0

我以爲當你使用Grok時,必須將模板添加到「模板」文件夾中,並且您似乎正在使用「contact_templates」作爲目錄。 – vangheem

+1

Dexterity KGS 1.0.3上的軟件包有一些錯誤;你在用這個嗎? http://good-py.appspot.com/release/dexterity/1.0.3-1?plone=4.1 – hvelarde

回答