2008-10-21 62 views
15

我正在試圖將我們公司從SalesForce轉移到SugarCRM,但我遇到了一個討厭的bug(當我向帳戶添加自定義字段的那一刻,所有帳戶都停止顯示)。我們已經爲SugarCRM人員提供了支持,但他們只爲開放源代碼版本提供永久性的 - 然後獲得無價值的響應級技術支持(並且我們避免了像鼠疫這樣的專有軟件)。噢,我是否提到我們的Salesforce合約在本週結束時到期?如何調試SugarCRM問題/瞭解SugarCRM的工作方式?

因此,長話短說,我堅持調試SugarCRM應用程序自己。我是一個體面經驗豐富的程序員,我有基本的PHP能力,但我甚至不知道在哪裏嘗試解決這個問題。任何Sugar開發人員都可以推薦任何類型的調試Sugar的過程?是否有任何資源可以幫助我理解不同的PHP文件的作用,或者說Sugar系統的整體工作原理?

就像我說的那種事情的一個例子:我想出瞭如何讓糖打印堆棧痕跡,並通過以下幾個我注意到所有問題線涉及的模式

$this->_tpl_vars
我想喜歡嘗試並找出爲什麼這個方法調用不工作,但我不知道:

A)_tpl_vars什麼是應該做
B),其中_tpl_vars定義
C)什麼$this應該D)框架$this得到設置

所以,如果任何人可以幫助解釋如何/在哪裏我會開始找到這些問題的答案,我會非常感激。

+1

P.S.我已經試過了看糖人提供的文檔,但這一切似乎都是關於應用程序本身的工作原理,而不是應用程序背後的代碼是如何工作的。 – machineghost 2008-10-22 00:03:37

+0

可悲的是我也發現這是真的。關於代碼的工作原理很少,但關於應用程序的工作方式很多,這對開發人員來說太糟糕了 – AntonioCS 2009-12-15 13:59:46

回答

4

儘管這不是一個完美的答案,我的問題,這篇文章:

http://developers.sugarcrm.com/wordpress/2008/09/26/where-is-the-code-for-x/

確實有點幫助。另外,當我進一步瀏覽官方的Sugar文檔時,我發現開發者指南確實包含了一些關於Sugar如何工作的解釋(儘管顯然它不像糖的工作方式那麼集中於如何讓Sugar做新事物)。

希望能幫助其他新興糖業開拓者。

14

幾年前,我和SugarCRM一起工作過,雖然我喜歡我在表面看到的東西,但由於您現在遇到了什麼,我最終拒絕了我們的項目。該產品的內部嚴重缺乏證據。我曾設想爲該產品編寫一些靈活的模塊,但資源不存在。你會花時間挖掘代碼,傾訴論壇帖子,並試圖找到你想要完成的事例。聽起來不像事情變得好多了。由於您的PHP體驗低於上師級別,並且您無疑忙於其他許多任務和最後期限,所以我認爲您應該重新考慮此過渡,如果時間不晚,至少直到您使用Sugar獲得更好的舒適度。如果由於與Salesforce的合同到期而被迫轉移到Sugar,我認爲您可能會遇到一些嚴重的胃灼熱!

+0

您使用的是什麼版本的SugarCRM? – Joseph 2011-02-11 16:40:52

0

$this是對當前對象的引用。

class Test { 

    var $tmp; 

    function __construct() { 
     $this->tmp = 42;  
    } 
} 
2

您還可以嘗試安裝xdebug(PHP擴展),並使用兼容的IDE(例如eclipse或Komodo)逐步執行代碼。

該URL告訴您正在訪問哪個模塊目錄以及哪個操作/視圖。大多數模塊下都有一個「views」文件夾。如果它不在那裏,它可以使用include文件夾中的默認MVC視圖與元數據佈局結合使用,或者使用經典視圖體系結構:index.php(listview),DetailView.php和EditView.php以及模板。

在過去的幾年裏,很多人都變得更好,所以我不確定第一個答案(Nack)是否仍然相關。它仍然非常粗糙,但新的Sugar框架是一個PHP黑客最好的朋友(很容易以升級友好的方式覆蓋的東西)。對於碰巧已經擁有PHP黑客並且只需要一些增強功能的公司來說,這非常棒。尋找合適的PHP承包商來幫助並不困難(免責聲明:我是其中一員)。如果您使用的是開放源代碼,那麼我認爲它是一個很好的工具,只需要基本的CRM,並且擁有不到100個用戶。

+1

對SugarCRM有很好的理解的「尋找實惠的PHP承包商」應​​該很難。僅僅因爲你知道php很好,對SugarCRM幫助不大。 Sugar是一個非常龐大複雜的PHP應用程序,它需要很多時間才能真正弄清楚SugarCRM(不是說我做過或將會真正理解Sugar) – AntonioCS 2009-12-15 14:15:26

1

我建議確保它確實是一個代碼錯誤,而不僅僅是一個錯過配置。您是通過「管理」>「Studio」>「聯繫人」>「字段」還是通過SOAP API添加字段?

您使用的是最新版本的Sugar嗎?

我真的同意這個項目,它可怕的記錄不足,缺乏教程和例子。

我自己正在經歷過時/遺失文件的痛苦。 祝你好運!

2

tpl是smarty模板文件。在屏幕上顯示數據時使用它們。我如何做我的調試過程是創建很多var轉儲到錯誤lof或只是在屏幕上打印它們。

也得到服務器上的xdebug,這會幫助你很多。 Sugar是mvc平臺,所以瞭解它是如何工作的,並且會更容易。

看看一些片斷我在後www.eontek.rs

+0

爲您的片段+1。 ;) – stefgosselin 2011-06-14 11:02:39

2

如果我遇到同樣的問題,當時並沒有顯示該帳戶的詳細信息頁面,並給了500內部錯誤。我檢查了它不是由TPL生成的。起初我檢查了該文件夾的權限,在我的情況下他們都設置了。所以我採取了緩存\模塊\帳戶\ DetailView.tpl的備份和手動添加該領域,之後,一切工作。每次在開發者模式下都需要手動複製這個文件。這是一種痛苦,但仍然沒有答案。我曾在論壇,Bug,Twitter等網站上詢問過這個問題,沒有任何幫助。順便說一下,我們正在使用Sugar專業版。

6

使用Krumo庫可以提供幫助。這很容易,比var_dumpprint_r更好。

只需下載源代碼並將其添加到您的自定義文件夾中的某個位置即可。我使用custom/include文件夾。

然後覆蓋一個視圖或任何你需要看看。包含文件class.krumo的路徑。PHP文件,並krumo你想看看什麼對象:

簡單的例子 -

<?php 
    require_once('include/MVC/View/views/view.detail.php'); 
    require_once('custom/include/krumo/class.krumo.php'); 
    class AccountsViewDetail extends ViewDetail { 

    function AccountsViewDetail() { 
     parent::ViewDetail(); 
    } 

    // Override the parent function "preDisplay" to add our own template 
    function preDisplay(){ 
     krumo($this->bean); 
     $metadataFile = $this->getMetaDataFile(); 
     $this->dv = new DetailView2(); 
     $this->dv->ss =& $this->ss; 
     $this->dv->setup($this->module, $this->bean, $metadataFile, 'custom/modules/Accounts/tpls/AccountsDetailView.tpl'); 
    } 


    } 
?> 

你會得到你可以深入到網頁上一個不錯的對象。

enter image description here