2012-01-11 31 views
0

我已將collective.z3cform.datagridfield添加到我的構建中,請將其視爲在我的網站設置中處於活動狀態;但是,我無法通過透明網頁編輯器爲靈巧內容類型添加datagridfield類型的字段。我錯過了什麼?datagridfield在通過web內容類型編輯器的敏捷中不可見

+1

TTW編輯器不會自動支持這些附加字段。該領域需要與plone.schemaeditor進行一點整合。 – vangheem 2012-01-13 18:17:30

+0

如果你能指出我將它與plone.schemaeditor集成的正確方向,你可能會贏得一個答案。或者如果你只是發佈了一個答案,而不是一個評論,並提供更多關於你如何學習的信息。沒有理由讓你不要因爲幫助而獲得業力。 – FMM 2012-01-13 22:50:49

回答

2

擴展vangheem的答案:你可以通過提供一個字段工廠來爲collective.z3cform.datagridfield提供支持,但它會是一種破解。

原因是,collective.z3cform.datagridfield.row.DictRow需要定義表格行的模式。這成爲一旦呈現的子表單。此實例中的模式編輯器需要根據(表格)模式的字段類型來詢問您。

取決於你是什麼解決方案之後,你也許能夠通過實現與固定表架構場廠這樣就完事了:

from five import grok 
from zope import schema 
import collective.z3cform.datagridfield.row 
import plone.schemaeditor.interfaces 
import zope.interface 

# example from http://pypi.python.org/pypi/collective.z3cform.datagridfield 
class ITableRowSchema(zope.interface.Interface): 
    one = schema.TextLine(title=u"One") 
    two = schema.TextLine(title=u"Two") 
    three = schema.TextLine(title=u"Three") 

# new field factory for the zope.schema.interfaces.IObject 
class DataGridFieldFactory(grok.GlobalUtility): 
    grok.provides(plone.schemaeditor.interfaces.IFieldFactory) 
    # this will show up in the schema editor vocabulary 
    title = "DataGridField" 

    def __call__(self, *args, **kwargs): 
     # that's the horrid part as it will nail your field to this 
     # specific schema 
     kw = dict(value_type=collective.z3cform.datagridfield.row.DictRow(
      schema=ITableRowSchema)) 
     kwargs.update(kw) 
     return zope.schema.List(*args, **kwargs) 

請看看到:plone.schemaeditor.fields.py更多有關現場工廠的信息。

這將爲您提供一個基本的數據網格,供您的內容類型使用。缺少的是小部件,目前您無法聲明AFAIK。

+0

因此,如果我正確地理解了你,TTW類型編輯器無法處理它,因爲定義DGF的模式作爲定義內容類型模式的子流程變得麻煩。它是否正確? – FMM 2012-01-20 03:32:12

+0

是的,這是正確的。根據我的理解,你所追求的目前不被支持。但是,根據你的情況和軟件的可能性(由我的例子給出),你可能會得到一個半解決方案。 – romanofski 2012-01-21 08:39:13

相關問題