我是灵巧的初学者(现在大约 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/