plone - 敏捷中的访问器和修改器方法

标签 plone dexterity

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

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

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。

问候,

最佳答案

您将必须从头开始创建一个新的 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 内容类型那样获得自动访问器和更改器(mutator)。相反,您只需访问模式字段,就好像它是一个属性一样。

例如:
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

关于plone - 敏捷中的访问器和修改器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912048/

相关文章:

workflow - 为 Plone 4 自定义内容类型创建工作副本

安装 PloneFormGen 时出现 plone.app.jquerytools Bad version 错误

python - 在所有其他部分完全运行后是否可以运行变形器部分?

plone - 使用灵巧行为提供方法

plone - 使用 Collective.dexteritytextindexer 扩展 SearchableText

python - 如何获取以自定义 Plone 灵巧表单显示的字段?

plone - 我如何查看 Plone 控制面板

python - 在以灵活的形式设置另一个字段后,动态更改一个字段的下拉选项。架构

plone - 某些 Zope 3 资源是否从 URL 中获取参数?

plone - 如何在zope模板中打印相关对象的属性?