如何将字段添加到主表而不是cstm表

时间:2014-05-15 01:49:41

标签: php sugarcrm custom-fields

我正在使用Sugarcrm 6.5,我想问一下我是否可以在主表而不是cstm表中创建字段。现在我通过这篇文章创建自定义字段 http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_Developer_Guide_7.1/70_API/Application/Module_Loader/90_Package_Examples/Creating_an_Installable_Package_that_Creates_New_Fields/此方法将自定义字段添加到cstm表

当我环顾四周时,这下面的帖子(最后的回复说有可能)

http://forums.sugarcrm.com/f3/how-take-out-_c-when-creating-custom-field-56452/

1 个答案:

答案 0 :(得分:6)

也许你不应该

这违反了标准的最佳做法。一般原因是,如果SugarCRM发布的更新恰好包含此模块的新字段,它将覆盖您已有的内容并导致问题和/或数据丢失。要说这个字段是自定义字段也会更加困难,这可能会使来自不同开发人员/团队的未来定制变得更加困难。

但你可以

在这种情况下,可接受的“但”是您无法将数据库的fields_meta_data表保留在版本控制之下。不是GIT,不是SVN - 你不能。因此,如果您在使用VCS进行推送的多开发人员或多系统环境中工作,实际上最好手动编写vardef代码,并且可以以相对升级安全的方式完成。方法如下:

添加您的vardef部分,Studio不允许您将其调整到第一个vardef文件中,例如: /custom/Extension/modules/MyModule/Ext/Vardefs/myfield.php。对于可能的每个字段/数据类型,这些vardef为namevnametype

<?php
$dictionary['MyModule']['fields']['myfield']['name']='myfield';
$dictionary['MyModule']['fields']['myfield']['vname']='LBL_MYFIELD';
$dictionary['MyModule']['fields']['myfield']['type']='varchar';

创建完成后,您可以运行修复和重建(这也有助于设置数据库,如alter table mymodule add myfield varchar(255)),然后在Studio中找到该字段。如果需要,调整长度或审核值,然后重新保存字段。 Studio将创建一个新文件,前缀为“sugarfield_”,例如/custom/Extension/modules/MyModule/Ext/Vardefs/sugarfield_myfield.php此文件的内容因数据类型而异,而不是第一个文件,但包括以下内容:

<?php
$dictionary['MyModule']['fields']['myfield']['audited'] = false,
$dictionary['MyModule']['fields']['myfield']['massupdate'] = true,
$dictionary['MyModule']['fields']['myfield']['duplicate_merge'] = 'enabled',
$dictionary['MyModule']['fields']['myfield']['duplicate_merge_dom_value'] = '1',
$dictionary['MyModule']['fields']['myfield']['merge_filter'] = 'disabled',
$dictionary['MyModule']['fields']['myfield']['calculated'] = false,

您还应该在/custom/Extension/modules/MyModule/Ext/Language/en_us.myfield.php创建语言文件。语言文件的示例内容:

<?php
$mod_strings['LBL_MYFIELD'] = 'My Awesome Field';

额外安全

因此,如果手动编码所有自定义字段的缺点是它们可以轻松覆盖但是更新(例如,您创建了一个名为“Marketo ID”的字段,然后Sugar提供了一个),我们如何才能减少这样的风险?我们在创建自定义模块时降低风险的方式相同 - 只需为系统或公司添加一些标准缩写的前缀。在我目前的雇主,我们都使用tcx_代替Ticomix。过去,我们使用psi_进行性能分析解决方案。如果不是调用您的字段myfield而是调用它tcx_myfield,那么您可以大大降低其他人创建同名字段的风险。这不是不可能,但你可能很安全。

请注意,需要将此前缀添加到标签中。 LBL_TCX_MYFIELD可以直接转换为“我的字段”,如果需要,您可以在以后轻松调整标签。