it-swarm.com.de

So entfernen Sie Mymodul-Konfigurationen bei der Deinstallation

Ich habe ein benutzerdefiniertes Modul erstellt und eine XML-Datei erstellt, um ein Menü zu erstellen

system.menu.custom_menu.yml

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

Wenn ich mein Modul installiert habe, wird das benutzerdefinierte Menü erstellt. Aber dann, wenn ich das Modul deinstalliere und versuche, es erneut zu installieren, erhalte ich die folgende Ausnahme

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

Was mache ich falsch? Gibt es eine Möglichkeit, meine Konfiguration (system.menu.custom_menu) aus den Konfigurationen zu entfernen, wenn ich mein Modul deinstalliere?

10
Ahmad

Am einfachsten ist es, sicherzustellen, dass die Konfiguration von Ihrem Modul abhängig ist.

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

Dann entfernt Drupal entfernt diese Konfiguration automatisch und warnt in der Benutzeroberfläche, dass sie entfernt wird.

Beachten Sie, dass dies nur für Neuinstallationen funktioniert und vorhandene nicht repariert.

Eine Alternative besteht darin, die Konfiguration in config/optional anstelle von config/install zu setzen. Sie wird dann nur erstellt, wenn sie noch nicht vorhanden ist und die Abhängigkeiten erfüllt sind.

29
Berdir