我已经创建了可安装包,我通过manifest.php创建了一些自定义用户字段:
$installdefs = [
'custom_fields' =>
[...],
[...]
]
我也添加了卸载后的内容:
'post_uninstall' => [
[
0 => '<basepath>/post_uninstall.php'
]
]
在我的post_uninstall.php中,我添加了:
$fieldsByModule = array(
'Users' => array(
'field1_c',
'field2_c',
'field3_c',
'field4_c',
'field5_c',
'field6_c'
),
);
foreach ($fieldsByModule as $moduleName => $fields) {
foreach ($fields as $field) {
$dyField = new DynamicField();
$dyField->bean = BeanFactory::getBean($moduleName);;
$dyField->module = $moduleName;
$dyField->deleteField($field);
}
}
当我手动运行post_uninstall脚本时,它可以运行并从Sugar DB中删除字段,但是当我尝试从Sugar ModuleLoader卸载软件包时,卸载过程陷入76%(重建平台...),软件包文件被删除但是自定义字段保留在DB中。
我的问题是 - 如何使用post_uninstall.php正确删除自定义字段。我的方式似乎不起作用。或者也许有其他方式?关键是用户应该能够从管理面板卸载软件包(自定义字段)。