模块框架与扩展框架(sugarCRM、SuiteCRM)
Module framework vs Extension framework (sugarCRM, SuiteCRM)
可能有一个简单的答案,但我只是想澄清一下。
在文档中我看到我们可以使用 MODULE 框架创建自定义视图,但同样可以使用 EXTENSION 框架来完成。
你什么时候选一个?这只是一个偏好问题吗?
更新:
在指南(sugar 6.5 开发人员指南)的第 727 页上写着 "This is handy if you want to map a file as a view outside of the custom/modules//views/view..php"
文件放在custom/Extensions/modules/[模块]/Ext/ActionFileMap
^ 但我们也可以通过简单地在 custom/modules/[module]/views/view..php 中创建一个文件来创建自定义视图,所以使用示例的唯一意义在于727 是我们希望自定义视图文件位于该文件夹之外的时候吗?所以整个 "extension framework" 做事的方式只是为了那个?
假设你指的是custom文件夹和modules文件夹,我想基本上有以下几种情况:
- 您想将视图添加到 CRM 的 stock 模块
在custom
文件夹(只要有可能),这样您添加的内容最不可能通过未来的 CRM 更新获得 removed/overwritten/disrupted。此外,您还可以更轻松地区分哪些文件是库存文件,哪些是您的文件。
- 您想将视图添加到自定义模块 (ModuleBuilder/hand-crafted)
这里您可以选择将您的自定义视图放在 modules
文件夹中,因为无论如何该模块都在您自己的控制之下。
但是,您可能更愿意将 customer/instance-specific 视图放在 custom
文件夹(特别是如果模块的未来模块 reinstall/updates 是可能的),同时仅将对您的自定义模块必不可少的视图放置在 module
文件夹(以及模块的安装包)中的所有安装中。
更新:
虽然我实际上并不特别熟悉 ActionFileMap,但我可以想到您想要使用它的两个原因:
- 将单个视图链接到多个模块
这样您就不必维护文件的多个副本。
- Sugar 拥有其扩展框架
的一般原因是允许开发人员使用任意文件名(在本例中甚至任意文件位置)而不是只有一个预定义的文件位置。
这样可以安装包而不会覆盖彼此的文件。
如果它们都使用相同的预定义文件位置,它们将撤消更改以前安装的包安装在相同的文件位置。
为了避免这种情况发生,每个 package/customization 可以将具有不同的任意名称的文件放入预定义的扩展文件夹中,并且 Sugar 快速修复& Rebuild 会将这些文件聚合到 custom/modules/<module>/Ext/*/*.ext.php
(此路径中没有 /Extension/
!)。
这允许包的更改更多地共存轻松相处
可能有一个简单的答案,但我只是想澄清一下。
在文档中我看到我们可以使用 MODULE 框架创建自定义视图,但同样可以使用 EXTENSION 框架来完成。
你什么时候选一个?这只是一个偏好问题吗?
更新:
在指南(sugar 6.5 开发人员指南)的第 727 页上写着 "This is handy if you want to map a file as a view outside of the custom/modules//views/view..php"
文件放在custom/Extensions/modules/[模块]/Ext/ActionFileMap
^ 但我们也可以通过简单地在 custom/modules/[module]/views/view..php 中创建一个文件来创建自定义视图,所以使用示例的唯一意义在于727 是我们希望自定义视图文件位于该文件夹之外的时候吗?所以整个 "extension framework" 做事的方式只是为了那个?
假设你指的是custom文件夹和modules文件夹,我想基本上有以下几种情况:
- 您想将视图添加到 CRM 的 stock 模块
在custom
文件夹(只要有可能),这样您添加的内容最不可能通过未来的 CRM 更新获得 removed/overwritten/disrupted。此外,您还可以更轻松地区分哪些文件是库存文件,哪些是您的文件。 - 您想将视图添加到自定义模块 (ModuleBuilder/hand-crafted)
这里您可以选择将您的自定义视图放在modules
文件夹中,因为无论如何该模块都在您自己的控制之下。
但是,您可能更愿意将 customer/instance-specific 视图放在custom
文件夹(特别是如果模块的未来模块 reinstall/updates 是可能的),同时仅将对您的自定义模块必不可少的视图放置在module
文件夹(以及模块的安装包)中的所有安装中。
更新:
虽然我实际上并不特别熟悉 ActionFileMap,但我可以想到您想要使用它的两个原因:
- 将单个视图链接到多个模块
这样您就不必维护文件的多个副本。 - Sugar 拥有其扩展框架
的一般原因是允许开发人员使用任意文件名(在本例中甚至任意文件位置)而不是只有一个预定义的文件位置。
这样可以安装包而不会覆盖彼此的文件。
如果它们都使用相同的预定义文件位置,它们将撤消更改以前安装的包安装在相同的文件位置。
为了避免这种情况发生,每个 package/customization 可以将具有不同的任意名称的文件放入预定义的扩展文件夹中,并且 Sugar 快速修复& Rebuild 会将这些文件聚合到custom/modules/<module>/Ext/*/*.ext.php
(此路径中没有/Extension/
!)。
这允许包的更改更多地共存轻松相处