2

私は器用さの初心者ユーザーです(現在約2日)。Web サイトを移行する過程で、古いコンテンツ タイプを巧妙なコンテンツに移行しようとしています。

古典的なアーキタイプのスキーマ定義は次のようになります

TextField('script',
          searchable=0,
          mutator="write",
          accessor="__call__",
          edit_accessor="document_src",
          widget=TextAreaWidget(label="Page Template script",rows=40,cols=40),

器用さをどのように再定義できますか?Plone 252 から Plone 412 にアップグレードしています。

よろしく、

4

1 に答える 1

3

新しいDexterityコンテンツタイプを最初から作成し、Archetypeのスキーマをplone.directives.formから継承し、フィールドタイプがzope.schemaである新しいスキーマに完全に書き直す必要があります。

詳細については、こちらをご覧ください:http: //plone.org/products/dexterity/documentation/manual/developer-manual/schema-driven-types/referencemanual-all-pages

たとえば、Archetypeのスキーマフィールド宣言は、Dexterityでは次のようになります。

script = schema.TextLine(
        title=_(u"Page Template Script"),
    )

器用さのコンテンツタイプは、Archetypesコンテンツタイプのような自動アクセサーやミューテーターを取得しません。代わりに、属性であるかのようにスキーマフィールドにアクセスするだけです。

例えば:

script = myfolder.script

(Archetypesフィールドで指定したように)同じアクセサーとミューテーターを作成する場合は、Dexterityクラスで手動で作成する必要があります。

たとえば、次のようになります。

class MyFolder(dexterity.Container):
    """ """
    grok.implements(IMyFolderSchema)

    def __call__(self):
        return self.script

    def edit_accessor(self):
        return self.script

    def write(self, value):
        self.script = value
于 2012-01-21T10:04:26.227 に答える