Plone 灵巧性中的访问器和变异器方法
我是灵巧的初学者(大约2天了)。在迁移网站的过程中,我正在尝试将旧的内容类型迁移到灵巧的内容 经典原型中的模式定义如下Plone 灵巧性中的访问器和变异器方法,plone,dexterity,Plone,Dexterity,我是灵巧的初学者(大约2天了)。在迁移网站的过程中,我正在尝试将旧的内容类型迁移到灵巧的内容 经典原型中的模式定义如下 TextField('script', searchable=0, mutator="write", accessor="__call__", edit_accessor="document_src", widget=TextAreaWidget(label="Page Temp
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
关于,您必须从头开始创建一个新的敏捷内容类型,并将原型的模式完全重写为一个新模式,该模式继承自plone.directives.form,并使用字段类型表单zope.Schema 有关更多信息,请参见此处: 例如,原型的模式字段声明在灵活性方面如下所示:
script = schema.TextLine(
title=_(u"Page Template Script"),
)
灵巧内容类型不会像原型内容类型那样获得自动访问器和变异器。相反,您只需像访问属性一样访问schema字段
例如:
script = myfolder.script
如果您想要创建相同的访问器和变异器(就像您在Archetypes字段中指定的那样),您必须在您的Dextrity类上手动创建它们
例如,类似于:
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
您确定需要访问器吗?灵活性的要点之一是消除对expliit或生成的访问器/变异器代码的需求。如果需要一个方法来提供字段值,可以使用Python属性或描述符(在自定义内容类上)在set/get.Umm的字段/属性/属性接口后面抽象方法。我不确定是否使用这些方法。我正在阅读这本敏捷开发人员手册。readthedocs.org/en/latest/advanced/…但我不清楚我在尝试创建内容类型,该类型的字段采用页面模板代码,并在我的自定义视图中呈现。这就是为什么我在旧原型中使用accessor和mutator来使用zpt方法。