2014-09-12 39 views
0

我试图在Account详细视图中创建子面板,其中从外部REST服务中获取元素列表。SugarCRM从外部REST服务获取数据到子面板

我知道如何定义subpanel,但不知道如何填充来自外部网络源的数据。试图使用get_subpanel_data但我只能更改SQL

任何想法我该怎么做?

回答

2

当我在过去完成这项工作时,至少在Sugar 6中,我明显地选择不尝试创建真正的子面板。被加载的数据来自外部源,并且随页面动态加载,所以为什么要将它呈现为来自Sugar的静态数据?相反,我创建了一个定制的Smarty模板作为详细信息页面上的页脚。对于这样的示例,您可以查看它在Calls Edit View中的工作方式。我认为这是detailviewdefs.phpeditviewdefs.php中的footerTpl参数。我通过为我的模块创建一个自定义详细视图来加载smarty模板,所以custom/modules/MyModule/views/view.detail.php - 扩展基本Detail View类并重写显示以提供Smarty新参数,那么您的Smarty模板只需要迭代并呈现视图中的数据定义。你可以将自定义代码放入bean(如果是自定义模块)或自定义控制器方法中,然后引用view.detail.php中的那个,并仍然从那里的Smarty模板。

或者,你可以只加载JavaScript插入Smarty模板和使用JavaScript调用第三方服务,解析和展示它,等

1

我意识到这个问题是有点老了但它为什么不提供一个可能的解决方案的答案。我不会深入代码,但更多的只是介绍它如何工作的设计理论。如果有人需要更具体的代码帮助,那么这是另一个问题。

一对夫妇的想法...

  1. 正如你提到的,你可以自定义一个函数,将数据从您自己的SQL查询负载的子面板。这是我最近才知道的一个好的一年半之后最终使用的一种方法。

当你走这条路线时,你被禁止使用子面板中的列。我假定它使用实际的元数据文件来确定SubPanel可以使用哪些字段列,因此几乎需要在数据库表中定制数据与SubPanel元数据中定义的字段具有相同的列名称。

很明显,这种方法在正确的情况下效果很好,但并非总是如此,这导致我们进入了我所知道的第二种方法。

  1. 另一种方式几乎是在他的回答中提到的@ Mattew-Poer。这意味着完全放弃SubPanel,而是生成自己的HTML。这是我迄今为止最喜欢和最喜欢的方式,因为这可以在自定义模块中实现,所以我一直是一些非常自定义的模块!我将在下面展示一个例子。

(Click HERE to View full size image)

enter image description here enter image description here

在截图中,您可以在这个例子中,我有事情找类似的子面板但它是不是和很多灵活且容易看到自定义。

例如,在我的假子面板最左边的列是图像复选框。点击时,发出AJAX请求更改任务行Status

之后,复选框图像被更新,以显示新的状态状态下,Modified DateTime更新时,Status列有彩色背景SPANS,也更新了正确的文本和背景颜色点击左侧的复选框时。

对标准子面板做任何这样的操作都是一个完整的噩梦,当你构建自己的SubPanel版本时,你很难做一些你可以做的事情。使用SugarCRM默认的SubPanels,我已经构建了上述截图的相同克隆!这是一场噩梦。我可以轻松更新某些列中的内容和HTML。我甚至有AJAX点击复选框图像来更新,并执行我上面提到的所有其他更新。这并不难,工作也相当好,但它有一些问题。

  • 当您执行内联编辑,内联创建记录或子面板分页以加载不同的记录集时。然后,您将丢失应用的所有自定义HTML格式。原因是,在SubPanel中,您仅限于使用After UI加载逻辑挂钩。因此,由于已经加载了“页面”,所以当发出AJAX请求来添加/编辑子面板内容或使用分页链接加载一组新的项目时。它只加载这些事件的子面板内容,整个页面内容不会重新加载。由于逻辑挂接仅在页面加载后关闭1次,因此新加载的子面板数据不会收到任何自定义HTML格式。

在我的情况下,这意味着漂亮的彩色背景状态跨度丢失,图像复选框丢失,并且其他功能丢失。

现在为了获得超级技术,我可以走另一条第3条路线,而是为每个需要应用自定义HTML的SubPanel提交新的Custom Field Types。根据我的经验,这个过程非常困难,在某些情况下,它确实不是最好的解决方案。

由于解释原因,这就是为什么我的新模块使用Custom HTML route来生成我自己版本的自定义子面板或任何数据在我的模块页面中需要!到目前为止,它的工作状况比我想象的还要好,并且打开了我建立自定义SugarCRM模块的大门,以前我甚至没有意识到由于上面提到的一些问题可能会构建这些模块。现在我完全绕过他们,打开门做几乎任何事情!

我现在对于SugarCRM有一些非常酷的东西。如果有人有任何问题,请随时在新的问题中提出或在我个人的评论中提出。