在SuiteCRM里, 如果你的Logichook的事件是
after_relationship_delete,after_relationship_add,before__relationship_add,before__relationship_delete
之一的话, 那么你在关系模块下增减关系数据行时, 系统会执行两次
一次在调用模块下, 另一次在被调用的关系模块下
如果不注意的话, 就会导致逻辑代码重复调用, 因此你需要在LogicHookClass文件里进行入口判定
以避免多次执行
并且执行顺序需要注意,再新增了关系LogicHook之后,在服务器中执行的顺序会先是执行关联的Logichook,再执行其它
例如我定义了
$hook_array['before_save'][] =Array(1, 'Calculate total net weight, gross weight, volume', 'ContractProductsHandleLogicHook.php', 'ContractProductsLogicHook', 'calculateAmount');
$hook_array['after_relationship_add'][] =Array(10, 'Calculate total net weight, gross weight, clearance cost on suit products', 'ContractSuitProductsHandleLogicHook.php', 'ContractSuitProductsLogicHook', 'calculateAmount');
按照文档上,应该是先执行before_save,但是实际上是先执行after_relationship_add,并且执行两次
最好是在custom/modules/logic_hook.php定义模块, 顺序设定好就不会出现未知的执行顺序
网友评论