在这个位置suitecrm/custom/Extension/modules/Color/Ext/Vardefs/custom_field_level_name.php
我正在尝试以下代码以自定义现有字段定义
$dictionary['Color']['fields']['level_name']['type'] = 'varchar';
$dictionary['Color']['fields']['level_name']['len'] = '255';
$dictionary['Color']['fields']['level_name']['audited'] = true;
$dictionary['Color']['fields']['level_name']['vname'] = 'LBL_LEVEL_NAME';
这是在我的开发人员的本地工作
但是当我部署到生产时,这种定制不起作用。当我修复和重建时,我希望sql脚本能够将vardefs与数据库同步,但是没有显示ALTER命令来修改colors表中的level_name字段,我已经用其他字段完成了此操作,到目前为止没有问题。
为什么自定义现有字段的定义不适用于其他服务器?
谢谢你的评论......
更新
我已经明白问题与生成文件suitecrm/custom/modules/Color/Ext/Vardefs/vardefs.ext.php
的方式有关此文件的内容在远程服务器上与在本地开发pc上不同。我的本地pc中的字段中的自定义定义以及文件suitecrm/custom/modules/Color/Ext/Vardefs/vardefs.ext.php
中的修复后的自定义定义位于文件的末尾,以便它覆盖该字段的原始定义。在远程服务器上,自定义定义位于文件的开头,以便它们被文件的原始定义覆盖
例如,在我的本地文件中,内容有此订单
//...
$dictionary['Color']['fields']['level_name'] = array(
'required' => false,
'name' => 'level_name',
'vname' => 'LBL_LEVEL_NAME',
'type' => 'varchar',
'massupdate' => 0,
'no_default' => false,
'comments' => '',
'help' => '',
'importable' => 'true',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => '0',
'audited' => false,
'inline_edit' => true,
'reportable' => true,
'unified_search' => false,
'merge_filter' => 'disabled',
'len' => '255',
'size' => '20',
);
$dictionary['Color']['fields']['level_name']['type'] = 'varchar';
$dictionary['Color']['fields']['level_name']['len'] = '255';
$dictionary['Color']['fields']['level_name']['audited'] = true;
$dictionary['Color']['fields']['level_name']['vname'] = 'LBL_LEVEL_NAME';
//...
虽然在远程有这个订单
//...
$dictionary['Color']['fields']['level_name']['type'] = 'varchar';
$dictionary['Color']['fields']['level_name']['len'] = '255';
$dictionary['Color']['fields']['level_name']['audited'] = true;
$dictionary['Color']['fields']['level_name']['vname'] = 'LBL_LEVEL_NAME';
$dictionary['Color']['fields']['level_name'] = array(
'required' => false,
'name' => 'level_name',
'vname' => 'LBL_LEVEL_NAME',
'type' => 'varchar',
'massupdate' => 0,
'no_default' => false,
'comments' => '',
'help' => '',
'importable' => 'true',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => '0',
'audited' => false,
'inline_edit' => true,
'reportable' => true,
'unified_search' => false,
'merge_filter' => 'disabled',
'len' => '255',
'size' => '20',
);
//...
为了纠正远程服务器上的错误,我删除了文件suitecrm/custom/modules/Color/Ext/Vardefs/vardefs.ext.php
,修复后我预计订单要更正,但事实并非如此。我能做些什么来确保自定义定义位于最初定义的定义之后?
再次感谢您的评论
我们做的也是
这是SuiteCRM / SugarCRM开发的局限之一,你不能只用代码做一些东西,一些字段信息存储在fields_metadata
表中。
有时它只适用于某些类型的领域,说实话,我不确切知道为什么。