Plone敏捷支持通过接口(使用zope.schema作为定义)或通过XML文件定义内容类型模式。什么是首选/推荐的方式?使用传统的敏捷架构或XML接口?
另外:是否存在用于定义模式(models/mytype.xml)的XML方言文档?
这个presentation看起来很接近但不完整。
Plone敏捷支持通过接口(使用zope.schema作为定义)或通过XML文件定义内容类型模式。什么是首选/推荐的方式?使用传统的敏捷架构或XML接口?
另外:是否存在用于定义模式(models/mytype.xml)的XML方言文档?
这个presentation看起来很接近但不完整。
我个人更喜欢zope.schema路线;如果我真的想,我可以动态地用python改变接口属性,而XML定义当然是静态的。
另外,还要注意注册适配器和意见针对XML定义的模式,你需要把它拉成Python代码反正:
from plone.dexterity import api
class IMyXMLDefinedType(api.Schema):
api.model('my_xml_defined_type.xml')
的XML方言是plone.supermodel
package一部分;我无法找到source code以外的任何文档。
我更喜欢使用xml模型的接口。部分原因是因为我比Python更喜欢Python。部分原因是你不能用XML做一些事情。例如,如果您希望将字段注册为可搜索字段,并且使用collective.dexteritytextindexer,则您(当前)无法在Plone接口中设置此字段,因此您必须使用Python代码并因此使用接口。但是Martijn在他的回答中显示,你可以在一个界面中使用api.model来引用一个xml文件,所以如果你真的想要的话,也许这将是一种解决方法。
我会说作出贡献的混乱,没有一成不变的答案。
用更简单的内容类型,或者在更复杂的发展初期,我经常面向名模XML,因为它与灵巧TTW编辑器是如何工作的紧密结合。它使我能够与客户合作,并根据他们的内容类型提供非常快速的反馈。
有时我会连招进的一些功能,同时还具有经由名模在FTI中定义的字段文件系统的开发。
然而,随着更复杂的内容类型,你几乎肯定会碰到了什么东西,你可以通过单独的超模做不到。在那个时候,我通常会转换为模式 - 这通常很容易做到。
理想的情况下,如果你做了很多灵巧的发展,你应该能够很容易地来回移动。它们只是代表相同对象和属性的不同方式。
它不能替代完整的文档,但检查plone.supermodel中的fields.txt文件。它读起来像是一个参考资料,显示了所有内置字段类型的模式属性的supermodel xml等效项。 – SteveM 2012-08-09 16:32:31