0

我目前正在 vTiger 6.5 上创建新模块。目前我一直在使用 vTlib 创建模块,注册处理程序等。一切都运行良好,直到我突然无法保存任何模块的任何信息,甚至是标准模块。

我开始了全新安装并完成了安装模块的步骤,我创建了一个模块,但是在注册下面的处理程序时,我无法保存任何内容,只导致 index.php

    <?php
require_once('include/database/PearDatabase.php');
include_once('include/events/include.inc');

$adb = PearDatabase::getInstance();
$em = new VTEventsManager($adb);

$module = 'AddIsa'; 

$em->registerHandler('vtiger.entity.beforesave', 'modules/'.$module.'/'.$module.'Handler.php', $module.'Handler'); 
$em->registerHandler('vtiger.entity.beforesave.modifiable', 'modules/'.$module.'/'.$module.'Handler.php', $module.'Handler'); 
$em->registerHandler('vtiger.entity.beforesave.final', 'modules/'.$module.'/'.$module.'Handler.php', $module.'Handler'); 
$em->registerHandler('vtiger.entity.aftersave', 'modules/'.$module.'/'.$module.'Handler.php', $module.'Handler'); 

echo 'Events Added Successfully.';

?>

更新

我去了表 vtiger_eventhandlers 并删除了与我的自定义模块相关的事件处理程序,现在它工作正常。我不明白为什么会发生这种情况,因为我之前使用相同的脚本注册了事件处理程序,这些脚本也在此表中。

有任何想法吗?

4

2 回答 2

0

注册的事件处理程序将为所有模块执行。您的脚本可能有一些错误,这就是您无法保存到任何模块的原因。在您的处理程序脚本中,您可以检查当前模块并跳过执行类似这样的进一步代码

    $moduleName = $entityData->getModuleName();

    if ($moduleName != 'Invoice') {
        return;
    }
于 2020-02-19T09:49:50.907 回答
0

请使用 vtiger包结构。此外,如果您在模块中使用事件处理程序。您必须创建事件处理程序文件并使用Vtiger 模块事件结构

于 2017-04-18T09:17:21.987 回答