SugarCRM 逻辑钩子从 CE 迁移到 Professional 问题

SugarCRM logic hook Migrating from CE to Professional issue

我使用的是 SugarCRM 6.8 CE,我的逻辑挂钩按预期工作。但是,当我切换到 SugarPro-Full-7.8.2.0 时。逻辑挂钩根本不起作用。我正在关注文档 http://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_7.8/Architecture/Logic_Hooks/ 。我的代码如下

SugarPro-Full-7.8.2.0/custom/modules/Accounts/logic_hooks.php

<?php

$hook_array['after_ui_frame'] = Array();
$hook_array['after_ui_frame'][] = Array(2, 'After Relationship Add','custom/Extension/modules/Accounts/Ext/LogicHooks/account_hooks.php','AccountHooks','generateOWQ');

?>

SugarPro-Full-7.8.2.0/custom/modules/Accounts/Ext/LogicHooks/account_hooks.php

<?php
    if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

    class AccountHooks{

        function generateOWQ($event, $arguments){
           //my logic
        }
    }

?>

after_ui_frame 挂钩是旧版 MVC 挂钩,不适用于 Sugar 7 中的 Accounts 模块。

正如 documentation 指出的那样:

The after_ui_frame hook executes after the frame has been invoked and before the footer has been invoked for modules in backward compatibility mode.

(强调我的)

大多数 Sugar 7 模块,包括 Accounts,使用 Sugar 的 sidecar javascript framework 在客户端构建用户界面。 这些模块 not 运行 in backwards- c兼容模式并调用这个钩子。只有在 URL 中带有 #bwc 的非 Sidecar 模块才可以。

根据你的逻辑必须做的事情,考虑使用不同的钩子,例如after_relationship_add, after_retrieve, etc.

如果您的代码还应该修改 UI,您可能必须在客户端做一些事情,例如通过 extending views.