2012-06-29 3 views
1

내부 문자열의 쌍을 저장, 나는내가 커플을 저장하는 플론 (Plone) 제어판에서 구성 패널을 구축 할 필요가 plone.app.registry


플론 (Plone) 3. plone.app.registry을 사용하고 싶습니다 구분 기호와 함께이 하나의 문자열로 portal_properties 내부 부부를 저장 프로젝트가

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 
    ) 
우리가 사용

(: 나는 사용자 인터페이스에 자신을 제한하는 경우

, 그것은 자동으로 구축 스키마 인터페이스를 정의하는 것은 매우 간단합니다). IObjectField가 정의 된 IPersistent 어댑터가없는 한 plone.app.registry와 (이하 "VALUE_TYPE =에는 schema.object"포함)이 방법을 사용


나는 예외를 얻을.

내 자신의 어댑터를 제공하면서 더 깊이 들어가기 전에 : 내 문제의 초기 필요성에 도달하는 간단한 방법이 있습니까?

+0

또한 스키마로 전환했습니다. 필드의 유형을 입력하십시오. 그러나 z3c.form은 지금 당장 위젯을 지원하지 않습니다. 블레아! –

+0

확실히 collective.z3cform.datagridfield는 dict이며 plone.app.registry와 작동합니다. – vangheem

답변

1

Plone (app.) 레지스트리 문서, 특히 "Persistent fields"에 대한 plone.registry 문서를 다시 읽어야합니다.

모든 zope.schema 유형이 지원되는 것은 아니며 일부는 plone.registry.field의 영구 변종을 사용해야합니다. 일반적으로 파이썬 (int, unicode, float 등)의 기본 유형이 아닌 특수 처리는 특별한 처리가 필요합니다. 일부 설정을 제공하는 추가 기능이 나중에 파일 시스템에서 제거되는 경우에도 레지스트리를 계속 유지하기위한 의도적 인 디자인 선택이었습니다.

기본 문서와 plone.app.registry 문서의 GenericSetup 예에서 plone.registry.field.Tuple을 사용하는 예가 있습니다.

+0

한노 답장이 맞습니다. 그러나 plone.app.registry의 문서에 적절한 문서가 있습니다. –

+0

내 의견을 쓰는 데 너무 느립니다. 그 insize z3c.form.browser 모듈 (object.txt 참조)에 대한 속성 설명서를 찾았습니다. –