Tha*_*ham 1 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/
这违反了标准的最佳做法.一般原因是,如果SugarCRM发布的更新恰好包含此模块的新字段,它将覆盖您已有的内容并导致问题和/或数据丢失.要说这个字段是自定义字段也会更加困难,这可能会使来自不同开发人员/团队的未来定制变得更加困难.
在这种情况下可接受的"但是"是您无法将数据库的fields_meta_data表保留在版本控制之下.不是GIT,不是SVN - 你不能.因此,如果您在使用VCS进行推送的多开发人员或多系统环境中工作,实际上最好手动编写vardef代码,并且可以以相对升级安全的方式完成.这是如何做:
添加Studio不允许您调整到第一个vardef文件的vardef部分,例如 /custom/Extension/modules/MyModule/Ext/Vardefs/myfield.php.对于每个字段/数据类型,那些vardef是name,vname和type.
<?php
$dictionary['MyModule']['fields']['myfield']['name']='myfield';
$dictionary['MyModule']['fields']['myfield']['vname']='LBL_MYFIELD';
$dictionary['MyModule']['fields']['myfield']['type']='varchar';
Run Code Online (Sandbox Code Playgroud)
创建完成后,您可以运行修复和重建(这也有助于设置数据库等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,
Run Code Online (Sandbox Code Playgroud)
您还应该在/custom/Extension/modules/MyModule/Ext/Language/en_us.myfield.php.创建语言文件.语言文件的示例内容:
<?php
$mod_strings['LBL_MYFIELD'] = 'My Awesome Field';
Run Code Online (Sandbox Code Playgroud)
因此,如果手动编码所有自定义字段的缺点是它们可以轻松覆盖但是更新(例如,您创建了一个名为"Marketo ID"的字段,然后Sugar提供了一个),我们如何才能降低风险那?我们在创建自定义模块时降低风险的方式相同 - 只需为系统或公司添加一些标准缩写的前缀.在我现在的雇主,我们都使用tcx_Ticomix.过去,我们用于psi_Profiling Solutions.如果不是调用你的字段而是myfield调用它,tcx_myfield你就可以大大降低别人创建同名字段的风险.这不是不可能,但你可能很安全.
请注意,您不需要将此前缀添加到标签中.LBL_TCX_MYFIELD可以直接转换为"我的字段",如果需要,您可以在以后轻松调整标签.