你如何调试SugarCRM问题/了解SugarCRM如何工作?

时间:2008-10-21 23:57:01

标签: php sugarcrm

我正在尝试将我们的公司从SalesForce转移到SugarCRM,但我遇到了一个令人讨厌的错误(当我向帐户添加自定义字段时,所有帐户都停止显示)。我们已经从SugarCRM人员那里获得了支持,但是他们只对开源版本提供了永远然后获得无价值的响应级技术支持(我们避免使用像瘟疫这样的专有软件)。哦,我是否提到我们的Salesforce合同在本周末到期了?

所以,长话短说,我自己调试了SugarCRM应用程序。我是一个经验丰富的程序员,我有基本的PHP能力,但我甚至不知道在哪里尝试解决这个问题。那里的Sugar开发人员可以推荐任何调试Sugar的过程吗?是否有任何资源可以帮助我理解不同的PHP文件的作用,或者Sugar系统的整体运作方式?

就像我正在谈论的那种事情的一个例子:我想出了如何获取糖来打印堆栈跟踪,并且通过以下几个我注意到一个涉及所有问题行的模式

{{ 2}} 我想尝试弄清楚为什么那个方法调用不起作用,但我不知道:

A)_tpl_vars应该做什么 B)定义_tpl_vars的地方 C)$this应该是什么 D)框架中$this的设置位置 等

因此,如果有人可以帮助解释我将如何/在哪里开始寻找这些问题的答案,我将非常感激。

9 个答案:

答案 0 :(得分:14)

几年前我和SugarCRM合作过,虽然我喜欢我在表面上看到的东西,但由于你现在正在经历的事情,我最终拒绝了它。该产品的内部结构严重不足。我曾设想为产品编写一堆光滑的模块,但资源不存在。您将花费所有时间挖掘代码,倾注论坛帖子,并试图找到您想要完成的内容的示例。听起来好像事情已经好多了。

鉴于您的PHP体验低于大师水平,并且您无疑忙于其他许多任务和截止日期,我认为您应该重新考虑这种转变,如果还不晚,至少在您获得之前糖更舒适。如果你因为与Salesforce的合同到期而被迫转移到Sugar,我想你可能会有一些严重的胃灼热!

答案 1 :(得分: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

答案 2 :(得分:4)

虽然这不是我的问题的完美答案,但本文:

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

确实有所帮助。此外,当我进一步了解官方Sugar文档时,我发现开发人员指南确实包含了Sugar如何工作的一些解释(尽管显然它并不像Sugar那样关注如何工作,因为它专注于如何让Sugar做新事物)。

希望能帮助任何其他新兴的Sugar开发出去。

答案 3 :(得分:2)

这些代码来自Smarty lib,而不是直接来自SugarCRM。

也许这个chm doc会有点帮助,http://code.google.com/p/sugardoc/downloads/list

答案 4 :(得分:2)

您还可以尝试安装xdebug(PHP扩展)并使用兼容的IDE(如eclipse或Komodo)逐步执行代码。

URL告诉您正在访问哪个模块目录以及哪个操作/视图。大多数模块下都有一个“views”文件夹。如果它不存在,它要么使用include文件夹中的默认MVC视图和元数据布局,要么使用经典视图体系结构:index.php(listview),DetailView.php和EditView.php和模板。

在过去几年中,很多情况都有所改善,所以我不确定第一个答案(Nack)是否仍然相关。它仍然非常粗糙,但新的Sugar框架是PHP黑客最好的朋友(很容易以升级友好的方式覆盖东西)。这对于碰巧已经拥有PHP黑客且只需要一些增强功能的公司来说非常棒。找到负担得起的PHP承包商帮忙并不是那么难(免责声明:我就是其中之一)。我认为这是一个很好的工具,如果你进入开源,只需要基本的CRM,用户少于100。

答案 5 :(得分:2)

tpl是一个聪明的模板文件。在屏幕上显示数据时使用它们。我如何进行我的debuging过程是创建大量的var转储到错误lof或只是在屏幕上打印它们。

还可以在服务器上获取xdebug,这将对您有所帮助。 Sugar是mvc平台,所以要知道它是如何工作的,然后会更容易。

看看我在www.eontek.rs发布的一些片段

答案 6 :(得分:2)

如果我遇到同样的问题,则当帐户的详细信息页面未显示且出现500内部错误时。我检查它不是由TPL生成的。起初我检查了该文件夹的权限,在我的情况下,他们都已设置。所以我采取了cache \ modules \ accounts \ DetailView.tpl的备份并手动添加了字段,之后一切正常。每次在开发人员模式下,都需要手动复制此文件。这很痛苦,但仍然没有答案。我在论坛,Bug,Twitter中问过这个,没有帮助。顺便说一下,我们正在使用Sugar Professional。

答案 7 :(得分:1)

我建议确保它确实是一个代码错误,而不仅仅是一个错过配置。您是否通过管理员&gt;添加字段?工作室&gt;联系人&gt;字段或通过SOAP API?

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

我真的同意这个项目非常缺乏文档,缺乏教程和示例。

我自己正在经历过时/缺失文档的痛苦。 祝好运!

答案 8 :(得分:0)

$this是对当前对象的引用。

class Test {

    var $tmp;

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