2012-06-29 44 views
1

我需要建立存儲夫婦Plone的控制面板配置面板,我想對Plone的3存儲字符串對內部plone.app.registry


使用plone.app.registry

如果我限制自己的用戶界面,這是相當簡單的定義一個模式界面,自動構建這樣的:

class IMyPair(Interface): 
value = schema.TextLine(title=u"value", required=True) 
title = schema.TextLine(title=u"title", required=False) 

class MyPair(object): 
    implements(IMyPair) 
    def __init__(self, value='', title=''): 
    self.value = value 
    self.title = title 

class IMyConfigPanel(Interface): 

    entry = schema.List(
     title=_(u'Foo'), 
     value_type=schema.Object(IMyPair, title=u"entry"), 
     required=True 
    ) 

我們使用這是店內portal_properties夫婦爲一個字符串項目(用分隔符)。


使用這種方法(與 「VALUE_TYPE =爲schema.object」)與plone.app.registry我得到一個例外,因爲IObjectField沒有定義IPersistent適配器。

在深入並變得瘋狂地提供我自己的適配器之前:有一種更簡單的方法來達到我的問題的最初需要?

+0

我也切換到了schema.Dict類型的字段,但是z3c.form現在不支持任何這個小部件。 Bleah! –

+0

很確定collective.z3cform.datagridfield是一個字典,可與plone.app.registry一起使用。 – vangheem

回答

1

您應該重新閱讀plone。(app。)註冊表文檔,尤其是「Persistent fields」的plone.registry文檔。

並非所有的zope.schema類型都支持,其中一些類型需要使用來自plone.registry.field的持久變體。通常,任何不是Python中的基本類型(int,unicode,float等)都需要特殊處理。即使提供了一些設置的附加組件後來從文件系統中刪除,這也是保持註冊表工作的有意設計選擇。

在基本文檔中使用plone.registry.field.Tuple的示例以及plone.app.registry文檔中的GenericSetup示例。

+0

Hanno的回覆是正確的,但是我在plone.app.registry的doctest裏找到了正確的文檔。 –

+0

寫我的評論太慢了。我找到了用於完成z3c.form.browser模塊的propert文檔(請參閱object.txt) –