为什么在Drupal 8中卸载时不会自动删除自定义模块中的配置

为什么在Drupal 8中卸载时不会自动删除自定义模块中的配置,drupal,drupal-8,drupal-modules,Drupal,Drupal 8,Drupal Modules,我想了解一下,如果卸载自定义模块并再次安装,为什么会出现一个错误,说明某些配置已经存在这是预期的行为吗? 我正在hook_uninstall()中手动删除配置这是处理此问题的正确方法吗? 正如其他帖子所说,我尝试过使用模块依赖关系,但这样会产生循环依赖关系,当需求未得到满足时,将无法安装模块 我知道我可以使用可选的,而不是安装,但这样配置永远不会被删除 === demo_rest_api/config/install/node.type.example_mytype.yml === type:

我想了解一下,如果卸载自定义模块并再次安装,为什么会出现一个错误,说明某些配置已经存在这是预期的行为吗?

我正在hook_uninstall()中手动删除配置这是处理此问题的正确方法吗?

正如其他帖子所说,我尝试过使用模块依赖关系,但这样会产生循环依赖关系,当需求未得到满足时,将无法安装模块

我知道我可以使用可选的,而不是安装,但这样配置永远不会被删除

=== demo_rest_api/config/install/node.type.example_mytype.yml ===

type: example_mytype
name: Example
description: 'Use <em>example</em> content to get to Drupal 8 development better.'
help: ''
new_revision: false
display_submitted: true
preview_mode: 1
status: true
langcode: en



=== demo_rest_api/demo_rest_api.install ===

function demo_rest_api_uninstall(){
    \Drupal::configFactory()->getEditable('node.type.example_mytype')->delete();
}
==demo\u rest\u api/config/install/node.type.example\u mytype.yml===
类型:示例_mytype
名称:示例
描述:“使用示例内容更好地进行Drupal 8开发。”
帮助:“”
新修订:错误
显示已提交:真
预览模式:1
状态:正确
语言代码:en
==demo\u rest\u api/demo\u rest\u api.install===
函数demo\u rest\u api\u uninstall(){
\Drupal::configFactory()->getEditable('node.type.example_mytype')->delete();
}

我希望在卸载模块时默认删除配置。

确保配置在卸载时按预期运行的最简单方法是在首次安装之前将其添加到配置文件中:

dependencies:
    - demo_rest_api
这样,在卸载模块时,它只会删除自身


另一种选择,,将配置文件从
config/install
移动到
config/optional
,然后冲突不会导致模块安装失败。

确保配置在卸载时按预期运行的最简单方法是在首次安装之前将其添加到配置文件中:

dependencies:
    - demo_rest_api
这样,在卸载模块时,它只会删除自身


另一种选择是,将配置文件从
config/install
移动到
config/optional
,然后冲突不会导致模块安装失败。

你好,Isaiah,谢谢你的回答,但是,正如我所说的,这样我会遇到循环依赖,如果卸载Yes,则无法安装模块,继续并手动删除配置。但是在将来,如果配置对原始模块有明确的依赖关系,那么它将自动卸载自己。我将编辑我的答案以澄清。你好,以赛亚,谢谢你的回答,但是,正如我所说的,这样我会遇到循环依赖,无法安装模块。如果卸载是,请继续并手动删除配置。但是在将来,如果配置对原始模块有明确的依赖关系,那么它将自动卸载自己。我将编辑我的答案以便澄清。