如何通过SugarCRM中的挂钩将价值与现有价值区分开来?
我试图在保存后使用如何通过SugarCRM中的挂钩将价值与现有价值区分开来?,sugarcrm,Sugarcrm,我试图在保存后使用逻辑挂钩,如果我是潜在客户中的更新受让人,则应将同一受让人分配给其相关备注。下面是我正在使用的代码。我目前在6.5企业版上。有人知道我如何比较这两个值吗 在modules/Leads/logic_hook.php中 $hook_array['after_save'] = Array(); $hook_array['after_save'][] = Array(1, 'Leads edited', 'custom/modules/Leads/ExtraLogic.php', 'E
逻辑挂钩,如果我是潜在客户中的更新受让人,则应将同一受让人分配给其相关备注。下面是我正在使用的代码。我目前在6.5企业版上。有人知道我如何比较这两个值吗
在modules/Leads/logic_hook.php中
$hook_array['after_save'] = Array();
$hook_array['after_save'][] = Array(1, 'Leads edited', 'custom/modules/Leads/ExtraLogic.php', 'ExtraLogic', 'saveAssigneeToNotes');
在custom/modules/Leads/ExtraLogic.php中
//check if a fields value has changed
if ($assigned_user_id != $bean->assigned_user_id)
{
// execute logic
} else {
// Same value
}
谢谢。在这种情况下,在保存逻辑钩子之前简单地使用会更容易。我建议查看官方文档中的不同用例:
以下是当相关主管的指定用户发生变化时,我将如何更新Notes的指定用户:
在custom/modules/Leads/logic_hooks.php
中包含此条目
<?php
$hook_version = 1;
$hook_array = array();
$hook_array['before_save'] = array();
$hook_array['before_save'][] = array(
50,
'Update Assigned User for Notes',
'custom/modules/Leads/NotesUpdater.php',
'NotesUpdater',
'updateOnAssignedUserChange',
);
在保存之前,通过上述逻辑钩子,可以100%检测更改并对其执行操作。在我看来,在保存后使用钩子是很少见的,而且非常具体,但是如果您将来需要它,SugarCRM的开发者博客条目描述了如何做到这一点 在这种情况下,在保存逻辑钩子之前简单地使用会更容易。我建议查看官方文档中的不同用例:
以下是当相关主管的指定用户发生变化时,我将如何更新Notes的指定用户:
在custom/modules/Leads/logic_hooks.php
中包含此条目
<?php
$hook_version = 1;
$hook_array = array();
$hook_array['before_save'] = array();
$hook_array['before_save'][] = array(
50,
'Update Assigned User for Notes',
'custom/modules/Leads/NotesUpdater.php',
'NotesUpdater',
'updateOnAssignedUserChange',
);
在保存之前,通过上述逻辑钩子,可以100%检测更改并对其执行操作。在我看来,在保存后使用钩子是很少见的,而且非常具体,但是如果您将来需要它,SugarCRM的开发者博客条目描述了如何做到这一点 您不必比较任何值(至少不在SugarCRM 7中,不确定是否在6.5中),因为SugarCRM已经为您做了:
钩子通常通过以下参数调用:($bean,$event,$arguments
)
在保存
钩子后,$arguments
在更改分配的用户时会显示如下内容:
Array
(
[isUpdate] => 1
[dataChanges] => Array
(
[date_modified] => Array
(
[field_name] => date_modified
[data_type] => datetime
[before] => 2016-12-28 22:05:50
[after] => 2017-02-21 19:23:42
)
[modified_by_name] => Array
(
[field_name] => modified_by_name
[data_type] => relate
[before] => Administrator
[after] => admin
)
[assigned_user_id] => Array
(
[field_name] => assigned_user_id
[data_type] => id
[before] => d4229698-640b-18f9-af63-179b140cfa7a
[after] => a4329698-640b-18f9-af63-179b140cfe76
)
)
)
(将file\u put\u内容('/tmp/after\u save\u arguments.txt',print\r($arguments,true));
放在after\u safe
hook中生成的代码)
所以你需要的所有信息都应该已经在那里了
您只需检查数组\u key\u是否存在('assigned\u user\u id',$arguments['dataChanges'])
,然后使用$bean
的当前变量对新值执行一些逻辑。
如果您还需要对旧值进行逻辑处理,则在“]
之前有“$arguments['dataChanges']['assigned\u user\u id'][”供您使用
哦,对了,也别忘了检查isUpdate==false
,因为在这种情况下,bean刚刚创建,并且dataChanges
将为空,因为之前不存在记录。
在这种情况下,您只对$bean
的当前值感兴趣。您不必比较任何值(至少不在SugarCRM 7中,不确定是否在6.5中),因为SugarCRM已经为您做了:
钩子通常通过以下参数调用:($bean,$event,$arguments
)
在保存
钩子后,$arguments
在更改分配的用户时会显示如下内容:
Array
(
[isUpdate] => 1
[dataChanges] => Array
(
[date_modified] => Array
(
[field_name] => date_modified
[data_type] => datetime
[before] => 2016-12-28 22:05:50
[after] => 2017-02-21 19:23:42
)
[modified_by_name] => Array
(
[field_name] => modified_by_name
[data_type] => relate
[before] => Administrator
[after] => admin
)
[assigned_user_id] => Array
(
[field_name] => assigned_user_id
[data_type] => id
[before] => d4229698-640b-18f9-af63-179b140cfa7a
[after] => a4329698-640b-18f9-af63-179b140cfe76
)
)
)
(将file\u put\u内容('/tmp/after\u save\u arguments.txt',print\r($arguments,true));
放在after\u safe
hook中生成的代码)
所以你需要的所有信息都应该已经在那里了
您只需检查数组\u key\u是否存在('assigned\u user\u id',$arguments['dataChanges'])
,然后使用$bean
的当前变量对新值执行一些逻辑。
如果您还需要对旧值进行逻辑处理,则在“]
之前有“$arguments['dataChanges']['assigned\u user\u id'][”供您使用
哦,对了,也别忘了检查isUpdate==false
,因为在这种情况下,bean刚刚创建,并且dataChanges
将为空,因为之前不存在记录。
在这种情况下,您只对$bean
的当前值感兴趣。我想在保存后使用,因为应该从潜在客户更新受让人,然后我想与旧受让人匹配相同的潜在客户记录。如果lead也是这样,那么我不想给code打电话询问您给出的注释
。我相信我完全理解这个问题。我已经扩展了答案,以演示将提供此功能的整个文件条目、逻辑挂钩定义以及整个类和方法文件。所有这些都是在保存之前
中完成的,不需要保存之后
方法。它在保存前的上提供的价值很小,而且它的用例在我看来很少见。我想在保存后使用,因为应该从潜在客户更新受让人,然后我想与旧受让人匹配相同的潜在客户记录。如果lead也是这样,那么我不想给code打电话询问您给出的注释
。我相信我完全理解这个问题。我已经扩展了答案,以演示将提供此功能的整个文件条目、逻辑挂钩定义以及整个类和方法文件。所有这些都是在保存之前
中完成的,不需要保存之后
方法。它在保存之前提供的几乎没有价值,而且它的用例在我看来是罕见的。