web-dev-qa-db-ja.com

アンインストール時にmymodule構成を削除する方法

カスタムモジュールを作成し、メニューを作成するためのymlファイルを作成しました

system.menu.custom_menu.yml

id: custom_menu
label: 'Custom menu'
description: 'Custom menu.'
langcode: en
locked: true
dependencies:
  - mymod

モジュールをインストールすると、カスタムメニューが作成されます。しかし、モジュールをアンインストールして再度インストールしようとすると、次の例外が発生します

exception 'Drupal\Core\Config\PreExistingConfigException' with message 'Configuration objects (system.menu.custom_menu) provided by mymod already exist in active configuration' in
/var/www/drupal8/core/lib/Drupal/Core/Config/PreExistingConfigException.php:70

私は何を間違っていますか?モジュールをアンインストールするときに、構成から構成(system.menu.custom_menu)を削除する方法はありますか?

10
Ahmad

最も簡単な方法は、設定がモジュールに依存していることを確認することです。

dependencies:
  module:
    - yourmodule
  enforced:
    module:
      - yourmodule

次に、Drupalはその構成を自動的に削除し、UIで削除されることを警告します。

これは新しいインストールでのみ機能し、既存のインストールを修正しないことに注意してください。

別の方法は、config/installではなくconfig/optionalに構成を配置することです。構成がまだ存在せず、依存関係が満たされている場合にのみ作成されます。

29
Berdir