首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SugarCRM $beanFiles数组修改最佳实践

SugarCRM $beanFiles数组修改最佳实践
EN

Stack Overflow用户
提问于 2014-07-14 18:07:53
回答 1查看 657关注 0票数 2

在SugarCRM中,您可以创建自定义模块(例如MyModule),它们与库存对象一样保存在/modules中,具有任何默认元数据、视图、语言文件等。对于自定义模块MyModule,您可能有以下内容:

代码语言:javascript
复制
 /modules/MyModule/MyModule.class.php
 /modules/MyModule/MyModule.php
 /modules/MyModule/language/
 /modules/MyModule/metadata

以此类推,以便所有的东西都被很好的定义,所有的模块都保持在一起。模块通过一个文件(如/custom/Extension/application/Include/MyModule.php )在系统中注册,其内容如下:

代码语言:javascript
复制
<?php 
$beanList['MyModule'] = 'MyModule';
$beanFiles['MyModule'] = 'modules/MyModule/MyModule.php';
$moduleList[] = 'MyModule';

显然,$beanFiles数组引用了基本模块的类,通常是SugarBean对象的扩展。最近我被告知,我们可以调整文件的位置,以便进行定制,这在一定程度上是有意义的。将其设置为$beanFiles['MyModule'] = 'custom/modules/MyModule/MyModule.php';将允许我们通过modules访问基类,即使安全扫描工具阻止核心文件更改,这也将允许我们不完全扩展,而是替换股票模块,如帐户或调用,而无需修改核心文件和系统升级以消除更改。

那么,我的问题是:这里的最佳实践是什么?多年来,我一直非常深入地使用SugarCRM,这是我第一次尝试修改$beanFiles数组。我担心的是,我在这里偏离了最佳实践,而且不知何故,可以加载modules/MyModule/MyModule.phpcustom/modules/MyModule/MyModule.php两个文件,这将导致PHP中的类名冲突(也就是说,这两个类都被命名为MyModule.)。显然,任何对类的引用都需要更新(例如,与此模块一起工作的entryPoint ),但我是否遗漏了任何潜在的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-14 18:15:37

从技术上讲,它应该是好的,但我可以看到,如果两者都被引用,那么核心版本和您的版本都可能发生冲突。这都取决于场景,但我更喜欢扩展核心bean,并在堆栈中找到可以使用自定义版本代替核心bean的地方。几年前我在这里写了一个例子:https://www.sugaroutfitters.com/blog/safely-customizing-a-core-bean-in-sugarcrm

对于大多数用例,有一种方法可以劫持糖,在给定的点上使用您的bean。

如果您无法绕过它,您可以始终使用grep来查看核心模块显式地包含在哪里,以确保不会发生冲突。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24742975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档