我尝试在Account
详细信息视图中创建子面板,其中元素列表是从外部REST
服务获取的。
我知道如何定义subpanel
,但不知道如何用来自外部网络源的数据填充它。尝试使用get_subpanel_data
,但我只能更改SQL
。
任何想法我该怎么做?
答案 0 :(得分:2)
当我在过去做过这个时,至少在Sugar 6中,我明显选择不尝试创建一个真正的子面板。正在加载的数据来自外部源并随页面动态加载,那么为什么要将它呈现为来自Sugar的静态数据呢?相反,我创建了一个自定义Smarty模板,用作详细信息页面上的页脚。对于这样的示例,您可以在“呼叫编辑视图”中查看其工作方式。我认为这是footerTpl
或detailviewdefs.php
中的editviewdefs.php
参数。我通过为我的模块创建自定义详细信息视图来加载智能模板,因此custom/modules/MyModule/views/view.detail.php
- 扩展基本详细信息视图类并覆盖显示以提供Smarty新参数,然后您的Smarty模板只需要迭代并呈现您的视图定义的数据。
要超级谦逊并遵守MVC,您甚至可以将自定义代码放入您的bean(如果它是自定义模块)或自定义控制器方法,然后从view.detail.php
引用它,并且仍然从那里喂它到Smarty模板。
或者,您可以将JavaScript加载到Smarty模板中,并使用JavaScript调用第三方服务,解析并呈现它等。
答案 1 :(得分:1)
我意识到这个问题现在有点老了,但它经常出现,所以为什么不提供几个可能的解决方案的答案。我不会进入代码,但更多的是关于它如何工作的设计理论。如果有人需要更具体的代码帮助,那么这是另一个问题。
一些想法......
当您走这条路线时,您将无法使用子面板中的列。我假设它使用实际的元数据文件来确定子面板可以使用哪些字段列,因此您非常需要数据库表中的自定义数据具有与子面板元数据中定义的字段相同的列名。
显然,这在适当的情况下效果很好,但并非总是如此,这导致我们进入我所知道的第二种方法。
(Click HERE to View full size image)
在屏幕截图中,您可以在此示例中看到我在SubPanel上看到了类似的内容,但它不是灵活且易于自定义的。
例如,我的假子面板中最左边的列是图像复选框。单击时,会发出AJAX请求以更改任务行Status
。
之后,复选框图片会更新以指示新的状态状态,Modified DateTime
已更新,Status
列具有彩色背景SPANS
,并且还会使用正确的文字进行更新单击左侧复选框时的背景颜色。
使用标准SubPanel执行任何操作都是一个完整的噩梦,并且在构建自己的SubPanel
版本时,很难做一些您可以做的事情。
话虽如此,我使用SugarCRM默认的SubPanels构建了上述截图的相同克隆!这是一场噩梦。我可以轻松更新某些列中的内容和HTML。我甚至有AJAX点击复选框图像来更新并执行我上面提到的所有其他更新。它并不太难,工作得相当好,但它有一些问题。
就我而言,这意味着漂亮的彩色背景状态跨度会丢失,图像复选框会丢失,而其他一些功能也会丢失。
现在为了获得超级技术,我本可以进入另一条第三条路线,而是为每个SubPanel提交新的Custom Field Types
,我需要将自定义HTML应用到。根据我的经验,这个过程非常困难,在某些情况下,它确实不是最佳解决方案。
由于解释的原因,这就是我的新模块使用Custom HTML route
生成我自己版本的自定义子面板或模块页面中需要的任何数据的原因!到目前为止,它的工作效果比我想象的还要好,并为我打开了构建自定义SugarCRM模块的大门,我之前因为上面提到的一些问题而无法实现这些模块。现在我完全绕过它们并打开门做几乎任何事情!
我现在正在为SugarCRM做一些非常酷的事情。如果有任何人有任何问题,请随时在新问题中提问或亲自在此发表评论。