假设我们在引线上有一个前保存逻辑钩子,现在我们如何检测这个被称为逻辑钩子的是:
- 正在保存潜在客户表单的crm用户
- 是从入口点捕获的线索
- 是肥皂调用触发的保存
- 是一个修改引导字段的工作流程
- 由于csv导入而被调用
- ...
我检查了一些行为,似乎没有在工作流程上调用逻辑钩子(至少在我的测试中) 我也希望在全局变量中找出这个问题,但是有很多全局变量。 那么如何检测逻辑钩子的调用者呢?
我发现解决这个问题的最好方法是添加一个:
$GLOBALS['log']->fatal(print_r($_REQUEST,true));
你的逻辑钩子。然后测试您需要考虑的每个方案,并查看请求的不同之处。还要检查$ _SESSION。您将能够找到一些您可以依赖的逻辑。
这就是我最终做的。我分享了我的一些观察结果,因此它可以帮助其他人(这些是基于其中一些可能适用的案例的陈述)
- 在第三方入口点调用
$_SESSION
为空,在直接入口点调用不是这样。休息时,会话也不是空的。- 休息电话有
$_REQUEST[rest_data]
而其他人没有。- 入口点调用在数组中有
$_REQUEST[entryPoint]
- 全局
$current_user
可用,但id var($current_user->id
)仅在用户提交crm表单的情况下才是字符串。- 在线编辑
$_REQUEST[action]
等于saveHTMLField
- 在用户调用
$_SERVER[HTTP_USER_AGENT]
是可用的,而在其他调用中它不是。
在一个简单的例子中,此代码显示了如何检测用户调用:
$trigger = false;
global $current_user;
if (!isset($current_user->id) || !strlen($current_user->id) > 2)
$trigger = true;
if ($trigger) {
//#My Custome Code
}