1

Plone Dexterity 支持通过接口(使用 zope.schema 进行定义)或通过 XML 文件定义内容类型模式。首选/推荐的方式是什么?

此外:是否有用于定义模式 (models/mytype.xml) 的 XML 方言的文档?

演示文稿看起来很接近但不完整。

4

3 回答 3

2

我个人更喜欢 zope.schema 路线;如果我真的想的话,我可以用 python 动态改变接口属性,而 XML 定义当然是静态的。

另外,请注意,要针对 XML 定义的模式注册适配器和视图,无论如何都需要将其拉入 python 代码:

from plone.dexterity import api

class IMyXMLDefinedType(api.Schema):
    api.model('my_xml_defined_type.xml')

XML 方言是plone.supermodelpackage的一部分;我无法找到源代码之外的任何文档。

于 2012-08-08T09:47:04.813 回答
0

我将通过说没有硬性和快速的答案来助长混乱。

对于更简单的内容类型,或者在开发更复杂的内容类型的早期,我经常倾向于超模 XML,因为它与灵巧的 TTW 编辑器的工作非常密切。它允许我与客户一起工作,他们可以非常快速地反馈他们想要从他们的内容类型中得到什么。

有时我什至会进入一些功能的文件系统开发,同时仍然通过超模在 FTI 中定义字段。

但是,对于更复杂的内容类型,您几乎肯定会遇到仅靠超模无法做到的事情。那时,我通常会转换为模式——这通常很容易做到。

理想情况下,如果你正在做大量的灵活性开发,你应该能够很容易地来回移动。它们只是表示相同对象和属性的不同方式。

于 2012-08-10T23:48:32.590 回答
0

我更喜欢接口而不是 xml 模型。部分原因是我更喜欢 Python 而不是 XML。部分原因是您无法使用 XML 做一些事情。例如,如果您想使用collective.dexteritytextindexer 将一个字段注册为可搜索的,您(当前)无法在Plone 界面中设置它,因此您必须使用Python 代码,因此必须使用一个界面。但是 Martijn 在他的回答中表明,您可以在接口中使用 api.model 来引用 xml 文件,所以如果您真的愿意,这可能是一种解决方法。

于 2012-08-10T20:00:12.987 回答