1

无论如何,是否可以在不依赖 Action Hooks 的情况下修改 SugarCRM 子面板中显示的内容?

现在要编辑子面板字段的内容,我必须使用这样的钩子......

$hook_array['process_record']

然后在我分配 Hook 调用的 Class 方法中,我可以像这样更改子面板中的一个字段......

$bean->name = '<a href="/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3Dproje_Web_Project_Tasks%26action%3DDetailView%26record%3D'
.$bean->id.'" rel="popover" data-content="'
.$bean->description.'" data-original-title="">'.$bean->name.'</a>';

我们对这种方法的主要和主要问题是,在您执行这些操作中的任何一个之前,它都非常有效......

  1. 使用快速创建表单添加项目
  2. 使用子面板分页按钮更改页面

在任何一种情况下,它都会重新加载子面板数据而不在数据上运行此挂钩代码,因此结果非常重要,因为您编辑的子面板字段不再被编辑并正常显示。

这是一个基本示例...这显示了使用上述 Hook 方法编辑的 2-3 个字段...
在此处输入图像描述

现在在子面板中分页或快速创建新记录后,它会重新加载子面板数据并且不应用挂钩代码,因此您可以看到结果如下所示...
在此处输入图像描述

我知道ListView有一种更可靠、更灵活的方法来编辑它的内容,get_list_view_data()我能够应用相同的编辑并让它们一直工作!

所以我希望有一种类似的方法来编辑子面板数据并让它总是将编辑应用于该数据?到目前为止,从我在研究中看到的情况来看,唯一能一直按预期工作的解决方案是制作一个全新的Custom Field Type!

我真的希望这不是唯一的方法,因为这对于我需要在子面板中编辑的每种类型的字段来说都是一个主要的痛苦,并且当有简单的方法来编辑除子面板之外的所有其他内容时感觉不对数据。

有没有人有任何想法、建议、提示、帮助,请与我分享这个问题,因为这是我在过去几个月开始使用 SugarCRM 开发以来遇到的主要问题?

4

1 回答 1

4

您可以通过编写自定义查询来更改数据以获取子面板的数据。

所以在你的bean(本例中的联系人)里面做一个功能:

function get_project_list() {
   $query = "SELECT project, info, matching, column, names FROM projects WHERE contact_id = '" . $this->id . "' AND deleted = 0"
   return $query;
}

然后在子面板定义中设置数据源,如下所示:

$layout_defs["Contacts"]["subpanel_setup"]['projects'] = array(
        'order' => 10,
        'sort_order' => 'desc',
        'sort_by' => 'name',
        'title_key' => 'LBL_PROJECTS_TITLE',
        'subpanel_name' => 'contact_projects',
        'module'=>'projects',
        'get_subpanel_data' => 'function:get_project_list',
        'function_parameters'=>array('type'=>'urgent'), // this is optional if you decide to sent parameters to the function if do this dont forget to define your function with function get_project_list($params)
        'top_buttons' => array (... buttons that you need go here..),
);

由于 sql 非常强大,您可以以任何您喜欢的方式修改子面板数据,或多或少:)

于 2013-11-29T14:25:13.100 回答