更改现有字段的定义不适用于其他服务器

问题描述 投票:1回答:1

在这个位置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,修复后我预计订单要更正,但事实并非如此。我能做些什么来确保自定义定义位于最初定义的定义之后?

再次感谢您的评论

php sugarcrm suitecrm
1个回答
1
投票

我们做的也是

  • 始终在两个实例上创建字段,然后与git合并
  • 同步fields_metadata +已更改的文件,然后执行修复和重建。

这是SuiteCRM / SugarCRM开发的局限之一,你不能只用代码做一些东西,一些字段信息存储在fields_metadata表中。

有时它只适用于某些类型的领域,说实话,我不确切知道为什么。

© www.soinside.com 2019 - 2024. All rights reserved.