Database SugarCRM-防止自定义模块的记录

Database SugarCRM-防止自定义模块的记录,database,module,sugarcrm,Database,Module,Sugarcrm,我希望能够创建一个模块作为sugarCRM和其他数据库之间的交互。为此,我借助模块生成器工具构建了一个模块,并希望将其连接到一个新表,该表是sugar数据和我的第二个应用程序数据之间的连接(以防止数据重复) 由于模块的新表是介于其他两个表之间的视图,sugar可以毫无问题地查看内容,但每当我尝试插入任何内容时,都会抛出异常。所以我想使用一个逻辑钩子,它将直接将数据存储在两个“原始”表中 我的问题是:即使数据存储正确,我也希望阻止sugar尝试存储任何内容。一旦我的钩子完成了它的工作,我能在钩子里

我希望能够创建一个模块作为sugarCRM和其他数据库之间的交互。为此,我借助模块生成器工具构建了一个模块,并希望将其连接到一个新表,该表是sugar数据和我的第二个应用程序数据之间的连接(以防止数据重复)

由于模块的新表是介于其他两个表之间的视图,sugar可以毫无问题地查看内容,但每当我尝试插入任何内容时,都会抛出异常。所以我想使用一个逻辑钩子,它将直接将数据存储在两个“原始”表中

我的问题是:即使数据存储正确,我也希望阻止sugar尝试存储任何内容。一旦我的钩子完成了它的工作,我能在钩子里做些什么来阻止糖的作用吗


对不起,我的英语很糟糕,谢谢阅读。

我建议您在自定义模块的控制器中重写Save方法

构建和部署模块后,将出现一个新目录:
custom/modules/yourcustommodule
。在该目录中,创建一个名为
controller.php
的文件

该文件应包括以下(未经测试的)代码:

您甚至可以将before/after钩子移动到这个自定义操作函数中。只要不调用默认的保存方法(
parent::action_save();
),SugarCRM的默认保存操作就不会发生


重要提示:部署自定义模块后,SugarCRM的最佳做法是永远不要重新部署它,而是在Studio中进行所有后续更改。这一点很重要,因为一旦您对自定义模块进行了这些文件级更改,如果重新部署该模块,这些更改将丢失。

为了确保我理解:您使用模块生成器创建了Sugar可以识别的模块,但该模块的数据来自外部源,Sugar应该只读取该模块的表,因为它不是一个真正的表,只是一个视图。对吗?具体的问题不必涉及将数据存储在实际表中的逻辑钩子,而只涉及防止自定义模块尝试使用Sugar的默认模块代码保存任何内容。对吗?很抱歉这么晚才回答,我不经常使用这个帐户。。。您知道,我强迫Sugar将视图视为自己的表,以便Sugar正确读取数据。然后,在编辑某些内容时,我使用一个逻辑挂钩来检索感兴趣的数据,并在第一个表中更新它们。但是,使用这种方法,Sugar试图更新视图(他认为它是自己的表),这让我感到不安,因为Sugar崩溃了……关于部署的说明非常重要。在Module Builder中,只需设计字段和关系,然后发布它,安装发布的版本,并在Module Builder中删除副本。尽快离开Moule Builder。在这方面的OP方法中,用视图替换模块的表是一种很好的方法,它可以使API获得原本不可用的数据。我们在一些关系的连接表中有元数据,视图能够为我们将其拉入所选条目中。非常方便的技术。
require_once('include/MVC/Controller/SugarController.php');

class yourcustommoduleController extends SugarController {
    function action_save() {
        return;
    }
}