2

我是灵巧的初学者(现在大约 2 天)。我正在尝试在迁移网站的过程中将我的旧内容类型迁移到灵巧的内容。

经典原型中的模式定义就像

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 的 schema 字段声明,在 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 回答