如何通过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 safehook中生成的代码)

所以你需要的所有信息都应该已经在那里了

您只需检查
数组\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 safehook中生成的代码)

所以你需要的所有信息都应该已经在那里了

您只需检查
数组\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打电话询问您给出的
注释
。我相信我完全理解这个问题。我已经扩展了答案,以演示将提供此功能的整个文件条目、逻辑挂钩定义以及整个类和方法文件。所有这些都是在
保存之前
中完成的,不需要
保存之后
方法。它在保存之前提供的
几乎没有价值,而且它的用例在我看来是罕见的。