显示来自父记录的一些信息的逻辑 Hook 引发错误

标签 logic hook sugarcrm

我有一个 SugarCRM 6.5 CE 的托管实例,我必须满足的要求之一是显示相关任务/事件中父记录的一些信息——联系电话号码、联系电子邮件地址记录。

到目前为止,我所发现的只是指向创建一个逻辑 Hook ,用于从父记录(联系人)中提取联系信息,并将这些信息显示在子记录(任务)的自定义字段中。

根据一些说明和示例,我得出了以下概述。

在“custom/modules/Tasks”下我创建了一个名为“logic_hooks.php”的文件

<?php// $Id$
$hook_version = 1;
$hook_array = Array();

// debug
$GLOBALS['log'] = LoggerManager::getLogger('SugarCRM');
$GLOBALS['log']->debug("Task: logic hook invoked"); 

// position, file, function
$hook_array['after_retrieve'] = Array();
$hook_array['after_retrieve'][] = Array('1', 'contact_info', 'custom/modules/Tasks/hooks/contact_info.php','contact_info_class', 'contact_info_method');
?>

在“custom/modules/Tasks/hooks”下我创建了一个名为“contact_info.phplogic_hooks.php”的文件

<?php
class contact_info_class {
    // retrieve contact information from parent record
    function contact_info_method($bean, $event, $arguments) {
        // debug
        $GLOBALS['log'] = LoggerManager::getLogger('SugarCRM');
        $GLOBALS['log']->debug("Tasks: contact_info_method called for event ".$event . "(BeanID: " . $bean->id . ")");

        // fetch data
        if ($bean->fetched_row['id'] != $bean->id) {
            // load Task
            //$bean = BeanFactory::getBean('Tasks', $id);

            // check if relationship is loaded
            //if ($bean->load_relationship('contact_tasks_parent'))
            if ($bean->load_relationship('contact_tasks')) {
                // fetch related beans 
                //$relatedBeans = $bean->contact_tasks_parent->getBeans();
                $relatedBeans = $bean->contact_tasks->getBeans();

                $parentBean = false;
                if (!empty($relatedBeans)) {
                    // order the results
                    reset($relatedBeans);

                    // first record in the list is the parent
                    $parentBean = current($relatedBeans);

                    // retrieve data from parent bean
                    $bean->contact_phone_c = $parentBean->phone_work
                    $bean->contact_primary_email_c = $parentBean->email1
                }
            }
        }
    } // contact_info_method
} // contact_info_class
?>

有了这个钩子(Hook),我可以毫无问题地创建新任务,但是当打开一个现有的任务时,我收到一条消息,正在阅读

处理您的请求时出错,请稍后重试。

作为 SugarCRM 的新手(顺便说一句,我正在处理 6.5.20 CE),我一点也不知道这里出了什么问题。

我也找不到任何应该写入某处的调试消息。

--Sil68

最佳答案

“contact_info.phplogic_hooks.php”文件应该与 logic_hooks.php 位于同一文件夹中(custom/modules/)。而且没有必要那样命名(事实上我认为它可能会引起问题)。尝试将其命名为 contact_info.php,并将 logic_hooks.php 文件中给出的路径更改为 custom/modules/Tasks/contact_info.php。

至于在哪里可以找到错误日志,假设您正在为 linux/OS X 的网络服务器使用 apache(因为您没有指定),错误日志位于

/var/log/apache2/error.log

/var/log/apache2/error_log

在windows中它会在

'C:\Program Files\Apache Software Foundation\Apache2.2\logs'。

现在你知道了错误日志在哪里,你可以把

error_log('some helpful message');

在您的 contact_info.php 文件中,查看将哪些消息(如果有)发送到错误日志。这可以告诉您它是否甚至启动了逻辑 Hook ,如果是,它通过逻辑 Hook 走了多远

关于显示来自父记录的一些信息的逻辑 Hook 引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309716/

相关文章:

java - 在链表java中切换节点时出现问题

java - 程序似乎没有进入 while

LDAP 不再可用 - 我如何登录 SugarCRM?

winapi - 如何在进程读取我的进程内存时调用函数 - Win32 API

php - 如何让潜在客户在SugarCRM 6.3 CE上拥有多种机会?

php - 在 SugarCRM CE 中编辑潜在客户转换页面

c++ - 排序并显示位数

Python:如何终止无限循环?

c++ - 通过注入(inject)的 DLL 绕过成员函数

c++ - 如何在不使用 CreateWindow(Ex) 的情况下创建窗口 (HWND)?