我有一个 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/
至于在哪里可以找到错误日志,假设您正在为 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/