如何调试SugarCRM问题/学习SugarCRM工作原理?

15

我正在尝试将我们公司从SalesForce迁移到SugarCRM,但是我遇到了一个可怕的错误(在向Accounts添加自定义字段后,所有账户都停止显示)。我们已经向SugarCRM支持团队付费寻求帮助,但他们对于开源版本只提供“花费很长时间才能得到毫无用处的响应”级别的技术支持(而我们像避免使用专有软件一样避免使用此类支持)。哦,我有提到我们的Salesforce合同下周到期了吗?

所以,长话短说,我现在陷入了自己调试SugarCRM应用程序的困境。我是一个相当有经验的程序员,具备基本的PHP能力,但我甚至不知道从哪里开始解决这个问题。有没有Sugar开发人员可以推荐任何用于调试Sugar的流程?有没有任何资源可以帮助我理解不同的PHP文件是做什么的,或者Sugar系统整体如何工作?

举个例子,我找出了如何让sugar打印堆栈跟踪,并通过跟随几个堆栈跟踪发现所有问题行都涉及

$this->_tpl_vars
。我想尝试弄清楚为什么该方法调用不起作用,但我不知道:

A)_tpl_vars应该做什么
B)_tpl_vars在哪里定义
C)$this应该是什么
D)$this在框架的哪个位置被设置
等等。

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


1
我已经尝试查阅Sugar开发者提供的文档,但似乎都是关于应用程序本身如何工作的,而不是应用程序背后的代码如何工作的。 - machineghost
很遗憾,我也发现这是真的。关于代码如何工作的内容很少,但是关于应用程序如何工作的内容很多,这对开发人员来说很糟糕。 - AntonioCS
9个回答

14

我在几年前使用过SugarCRM,尽管表面上看起来很不错,但最终因为你目前正在经历的问题而放弃了它。产品内部文档相当匮乏。我曾设想为该产品编写一些出色的模块,但实际上却找不到资源。你将花费大量时间查找代码、阅读论坛帖子,并尝试寻找所需功能的示例。听起来似乎情况并没有得到多大改善。

考虑到你PHP经验不是特别高超,而且无疑正忙于许多其他任务和截止日期,如果还没有太晚的话,我认为你应该重新考虑这个过渡,直到你对Sugar有更好的舒适度。如果你因与Salesforce合同到期而被迫转移到Sugar,我认为你可能会遇到一些严重的困难!


6
使用Krumo库来帮助你。这非常容易,比var_dumpprint_r好得多。
只需下载源代码并将其添加到自定义文件夹中的某个位置即可。我使用自定义/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

1
嘿,好的提示!我已经使用Krumo和Drupal几年了。最近几个月一直在研究Sugar,正如其他人所指出的,缺乏开发者文档让我很头疼。 - Stephane Gosselin

4
虽然这篇文章并不能完美回答我的问题,但是它确实有所帮助: http://developers.sugarcrm.com/wordpress/2008/09/26/where-is-the-code-for-x/。此外,当我仔细阅读Sugar官方文档时,我发现开发人员指南中包含一些有关Sugar的工作原理的解释(尽管它的重点不在于如何让Sugar做新的事情,而是更多地关注于如何使Sugar做出新的事情)。希望这对其他正在学习Sugar的开发人员有所帮助。

2

2
您也可以尝试安装xdebug(PHP扩展),并使用兼容的IDE(如eclipse或Komodo)逐步执行代码。 URL告诉您正在访问哪个模块目录以及哪个操作/视图。大多数模块下都有“views”文件夹。如果没有,则可能与元数据布局一起使用包含文件夹中的默认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

2

tpl是smarty模板文件。它们用于在屏幕上显示数据。我的调试过程是创建很多var dumps到error log或直接打印在屏幕上。

同时,在服务器上安装xdebug,这将对您有很大帮助。Sugar是MVC平台,所以了解其工作原理会更容易。

请查看我在www.eontek.rs发布的一些代码片段。


如果您有一分钟的时间,您能否 非常非常非常 帮忙看一下我在您的自定义字段片段上发布的问题,链接为 http://stackoverflow.com/questions/7924531/sugarcrm-6-2-adding-a-custom-field-in-user-profile。谢谢! - Stephane Gosselin

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

1

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

您正在使用最新版本的Sugar吗?

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

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


0

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

class Test {

    var $tmp;

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接