2012-08-08 35 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中定義的字段文件系統的開發。

然而,隨着更復雜的內容類型,你幾乎肯定會碰到了什麼東西,你可以通過單獨的超模做不到。在那個時候,我通常會轉換爲模式 - 這通常很容易做到。

理想的情況下,如果你做了很多靈巧的發展,你應該能夠很容易地來回移動。它們只是代表相同對象和屬性的不同方式。