it-swarm.com.de

Installation nicht möglich ... bereits in aktiver Konfiguration vorhanden

On Drupal 8.1 Ich führe diese Art von Nachrichten weiter aus, wenn ich versuche, ein benutzerdefiniertes Modul oder eine benutzerdefinierte Funktion zu aktivieren, die Änderungen an der Basisseite vornimmt (Felder hinzufügen).

Es ist wirklich nervig ...

Schritte:

  • Datenbank vollständig löschen
  • gehen Sie zu /install.php und wählen Sie Standardprofil
  • Nachdem die Site ausgeführt wird, gehen Sie zu Erweitern
  • Wählen Sie die Seite Funktion - Basis

Ergebnis:

Unable to install Feature - Basic Page, core.base_field_override.node.page.promote, core.entity_form_display.node.page.default, core.entity_view_display.node.page.default, core.entity_view_display.node.page.teaser, field.field.node.page.body, node.type.page already exist in active configuration.

Nun ja ... das ist, was ich tun möchte: Ändern Sie diese Standardeinstellungen!

Expexted:

Sie können meine Funktion installieren, die einige Änderungen an der Basisseite vornimmt.

Mein Feature

Hier ist mein Feature erstellen mit dem Features Modul

Grundsätzlich werden der Basisseite zwei Felder hinzugefügt: banner_image und background_image

Dateien:

config
    install
        core.base_field_override.node.page.changed.yml
        core.base_field_override.node.page.created.yml
        core.base_field_override.node.page.promote.yml
        core.base_field_override.node.page.status.yml
        core.base_field_override.node.page.sticky.yml
        core.base_field_override.node.page.title.yml
        core.base_field_override.node.page.uid.yml
        core.entity_form_display.node.page.default.yml
        core.entity_view_display.node.page.default.yml
        core.entity_view_display.node.page.teaser.yml
        field.field.node.page.body.yml
        field.field.node.page.field_banner_image.yml
        field.field.node.page.field_image.yml
        field.storage.node.field_banner_image.yml
        language.content_settings.node.page.yml
        node.type.page.yml
feature_basic_page.features.yml
feature_basic_page.info.yml

Warum wird diese einfache Sache nicht unterstützt? Ist es ein Fehler? Was muss ich tun, um meine Funktion nutzen zu können?

15
Guillaume Bois

Mit drush en Es klappt!

[profile_test]$ drush en feature_basic_page -y
The following extensions will be enabled: feature_basic_page
Do you really want to continue? (y/n): y    
feature_basic_page was enabled successfully.   [ok]

BEARBEITEN: Es gibt jetzt eine viel bessere Lösung, siehe: Wie entferne ich ein Konfigurationsobjekt aus der aktiven Konfiguration?

1
Guillaume Bois

Mit Drush kannst du das wahrscheinlich machen

drush config-delete module_name.settings

um die Konfigurationen zu löschen, die sich beschweren

24
GiorgosK

Modul gefunden, verwenden Sie Easy Install Modul, um die aktive Konfiguration zu löschen ohne Entwicklung oder Drush. Dies funktioniert auch dann, wenn Sie den Ordner optional und die erzwungene Option in den Konfigurationsdateien Ihres Moduls verpasst haben ( yml)

Diese Funktion wird nicht unterstützt, da ein Modul möglicherweise keine Konfigurationsentität ersetzt, die bereits mit install config vorhanden ist.

Um Konfigurationen für den Formular- und Ansichtsmodus für einen bereits vorhandenen Knotentyp hinzuzufügen, müssen Sie dies im Code in hook_install () implementieren.

Oder Sie müssen zuerst den Knotentyp auf Ihrer Site löschen, aber dann müssen Sie auch den Inhalt löschen.

Und nein, dies ist kein Fehler. So wird er definiert, um Konfigurationsverlust zu vermeiden.

3
Berdir

Ich habe das gleiche Problem für Pantheon-Site. Ich habe den Drush-Befehl eingegeben

Pantheonsite: drush @ pantheon.SITENAME.ENVNAME config-delete ERRORNAME

Localsite: drush config-delete ERRORNAME

es ist Arbeit für mich.

3
omkar gaonkar

Manchmal werden Module nicht sauber deinstalliert. Der Versuch, eine neuere Version wieder zu aktivieren, würde dann dieses Problem verursachen.

Führen Sie zuerst eine DB-Sicherung durch und führen Sie Folgendes aus:

drush @site.env sqlq 'DELETE FROM config WHERE name LIKE "%module_name%";'
0
augusto

Wenn Sie Ihrem benutzerdefinierten Modul Konfigurationen hinzufügen möchten, diese jedoch bereits in der aktiven Konfiguration vorhanden sind, können Sie diese Konfigurationen aus irgendeinem Grund nicht mit drush löschen (in meinem Fall, weil sie Teil eines Installationsprofils sind), und Sie sind sicher Es wird kein Problem geben, wenn Sie die Konfiguration überschreiben. Hier ist ein Ansatz zum Ersetzen dieser Konfigurationen.

Fügen Sie einen neuen Ordner in Ihrem benutzerdefinierten Modul/config/hook_install hinzu und fügen Sie Ihre config .yml-Dateien in diesem Ordner und dann in hook_install Ihres Moduls hinzu.

use Drupal\Component\Serialization\Yaml;

/**
 * Implements hook_install().
 */
function mymodule_install() {

  // Replace these configs.  We're using code to do this, as they are already
  // installed.
  $config_files = [
    'language.types',
    'language.negotiation',
  ];

  foreach ($config_files as $config_id) {
    $raw_data = file_get_contents(drupal_get_path('module', 'mymodule') . '/config/hook_install/' . $config_id . '.yml');
    \Drupal::configFactory()->getEditable($config_id)
      ->setData(Yaml::decode($raw_data))
      ->save();
  }
}
0
oknate