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