2012-08-08 37 views

回答

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.supermodel package一部分;我无法找到source code以外的任何文档。

+0

它不能替代完整的文档,但检查plone.supermodel中的fields.txt文件。它读起来像是一个参考资料,显示了所有内置字段类型的模式属性的supermodel xml等效项。 – SteveM 2012-08-09 16:32:31

0

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

0

我会说作出贡献的混乱,没有一成不变的答案。

用更简单的内容类型,或者在更复杂的发展初期,我经常面向名模XML,因为它与灵巧TTW编辑器是如何工作的紧密结合。它使我能够与客户合作,并根据他们的内容类型提供非常快速的反馈。

有时我会连招进的一些功能,同时还具有经由名模在FTI中定义的字段文件系统的开发。

然而,随着更复杂的内容类型,你几乎肯定会碰到了什么东西,你可以通过单独的超模做不到。在那个时候,我通常会转换为模式 - 这通常很容易做到。

理想的情况下,如果你做了很多灵巧的发展,你应该能够很容易地来回移动。它们只是代表相同对象和属性的不同方式。