В этом месте 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 для изменения поля level_name в таблице цветов. Я сделал это с другими полями и пока без проблем.
Почему настройка определения существующего поля не работает на другом сервере?
Спасибо за ваши комментарии ...
Обновление
Я понял, что проблема связана с тем, как генерируется файл suitecrm/custom/modules/Color/Ext/Vardefs/vardefs.ext.php
. Содержимое этого файла на удаленном сервере отличается от содержимого на моем локальном компьютере разработчика.Пользовательские определения в поле на моем локальном компьютере и после восстановления в файле 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
, и после ремонта я ожидал, что заказ будет исправлен, но это не так.Могу ли я что-нибудь сделать, чтобы убедиться, что пользовательские определения расположены после тех, которые были определены ранее?
Еще раз спасибо за ваши комментарии