我試圖在Account
詳細視圖中創建子面板,其中從外部REST
服務中獲取元素列表。SugarCRM從外部REST服務獲取數據到子面板
我知道如何定義subpanel
,但不知道如何填充來自外部網絡源的數據。試圖使用get_subpanel_data
但我只能更改SQL
。
任何想法我該怎麼做?
我試圖在Account
詳細視圖中創建子面板,其中從外部REST
服務中獲取元素列表。SugarCRM從外部REST服務獲取數據到子面板
我知道如何定義subpanel
,但不知道如何填充來自外部網絡源的數據。試圖使用get_subpanel_data
但我只能更改SQL
。
任何想法我該怎麼做?
當我在過去完成這項工作時,至少在Sugar 6中,我明顯地選擇不嘗試創建真正的子面板。被加載的數據來自外部源,並且隨頁面動態加載,所以爲什麼要將它呈現爲來自Sugar的靜態數據?相反,我創建了一個定製的Smarty模板作爲詳細信息頁面上的頁腳。對於這樣的示例,您可以查看它在Calls Edit View中的工作方式。我認爲這是detailviewdefs.php
或editviewdefs.php
中的footerTpl
參數。我通過爲我的模塊創建一個自定義詳細視圖來加載smarty模板,所以custom/modules/MyModule/views/view.detail.php
- 擴展基本Detail View類並重寫顯示以提供Smarty新參數,那麼您的Smarty模板只需要迭代並呈現視圖中的數據定義。你可以將自定義代碼放入bean(如果是自定義模塊)或自定義控制器方法中,然後引用view.detail.php
中的那個,並仍然從那裏的Smarty模板。
或者,你可以只加載JavaScript插入Smarty模板和使用JavaScript調用第三方服務,解析和展示它,等
我意識到這個問題是有點老了但它爲什麼不提供一個可能的解決方案的答案。我不會深入代碼,但更多的只是介紹它如何工作的設計理論。如果有人需要更具體的代碼幫助,那麼這是另一個問題。
一對夫婦的想法...
當你走這條路線時,你被禁止使用子面板中的列。我假定它使用實際的元數據文件來確定SubPanel可以使用哪些字段列,因此幾乎需要在數據庫表中定製數據與SubPanel元數據中定義的字段具有相同的列名稱。
很明顯,這種方法在正確的情況下效果很好,但並非總是如此,這導致我們進入了我所知道的第二種方法。
(Click HERE to View full size image)
在截圖中,您可以在這個例子中,我有事情找類似的子面板但它是不是和很多靈活且容易看到自定義。
例如,在我的假子面板最左邊的列是圖像複選框。點擊時,發出AJAX請求更改任務行Status
。
之後,複選框圖像被更新,以顯示新的狀態狀態下,Modified DateTime
更新時,Status
列有彩色背景SPANS
,也更新了正確的文本和背景顏色點擊左側的複選框時。
對標準子面板做任何這樣的操作都是一個完整的噩夢,當你構建自己的SubPanel
版本時,你很難做一些你可以做的事情。使用SugarCRM默認的SubPanels,我已經構建了上述截圖的相同克隆!這是一場噩夢。我可以輕鬆更新某些列中的內容和HTML。我甚至有AJAX點擊複選框圖像來更新,並執行我上面提到的所有其他更新。這並不難,工作也相當好,但它有一些問題。
在我的情況下,這意味着漂亮的彩色背景狀態跨度丟失,圖像複選框丟失,並且其他功能丟失。
現在爲了獲得超級技術,我可以走另一條第3條路線,而是爲每個需要應用自定義HTML的SubPanel提交新的Custom Field Types
。根據我的經驗,這個過程非常困難,在某些情況下,它確實不是最好的解決方案。
由於解釋原因,這就是爲什麼我的新模塊使用Custom HTML route
來生成我自己版本的自定義子面板或任何數據在我的模塊頁面中需要!到目前爲止,它的工作狀況比我想象的還要好,並且打開了我建立自定義SugarCRM模塊的大門,以前我甚至沒有意識到由於上面提到的一些問題可能會構建這些模塊。現在我完全繞過他們,打開門做幾乎任何事情!
我現在對於SugarCRM有一些非常酷的東西。如果有人有任何問題,請隨時在新的問題中提出或在我個人的評論中提出。