我是敏捷的初学者(现在约2天)。我正在尝试将旧内容类型迁移到迁移网站过程中的dextertiy内容。
经典原型中的模式定义就像
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。
此致
答案 0 :(得分:3)
您必须从头开始创建一个新的Dexterity内容类型,并将您的Archetype的Schema完全重写为一个新的模式,该模式继承自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
如果要创建相同的访问器和mutator(就像在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