Teilen Sie diesen Artikel:
Im letzten Tutorial haben wir über das Modul Config Split für Drupal 8 gesprochen. Heute werde ich Ihnen ein weiteres konfigurationsbezogenes Modul für Drupal 8/9 zeigen - Config Ignore. Sie überschneiden sich teilweise miteinander. Beide helfen uns, Konfigurationen zwischen verschiedenen Umgebungen getrennt zu halten. Allerdings ist die Verwendung etwas anders. Das gilt auch für das Ergebnis. Am besten lernt und versteht man sie anhand von Beispielen aus der Praxis.
Nehmen wir an, wir müssen einige Entwicklungen im Zusammenhang mit der Funktionalität des E-Mail-Versands vornehmen. Wir möchten vielleicht eine Vorlage gestalten. Oder einen Ereignisabonnenten erstellen, der eine bestimmte E-Mail an den Website-Administrator senden soll. Oder eine Benachrichtigung bei einer Cron-Ausführung erstellen. Oder wir wollen einfach nur sicherstellen, dass wir überhaupt E-Mails versenden können!
Verwenden wir für dieses Beispiel die Standard-E-Mail-Adresse der Website. In der lokalen Umgebung würden wir also höchstwahrscheinlich unsere eigene E-Mail verwenden, oder? Aber wenn wir die Konfigurationen für die Test- oder Live-Umgebung exportieren, wollen wir nicht, dass unsere E-Mail als Standard-E-Mail eingestellt wird, sondern dass dies die echte E-Mail ist. Also müssen wir diese Konfiguration ignorieren. Können wir das tun?
Natürlich können wir das! Schon neugierig? Dann fangen wir an!
Zunächst müssen wir das Modul Config Ignore installieren und aktivieren:
composer require drupal/config_ignore
drush en config_ignore
Wir sollten auch den Cache löschen
drush cache:rebuild
und wir hätten das Modul bereits einsatzbereit. Es ist von einem anderen Modul - Config Filter - abhängig, aber das wird automatisch für uns erledigt. Wir müssen nur die Aktivierung beider Module genehmigen, falls erforderlich. Dieses Modul arbeitet näher am Konfigurationssystem des Kerns, so dass es auf den ersten Blick nicht so offensichtlich ist, wo es sich befindet. Wir haben keine neuen Einträge im Hauptbereich Konfiguration → Entwicklung. Schauen wir mal, was wir dort haben.
Wie bereits erwähnt - nichts Besonderes. Nur das Standard-Konfigurationssynchronisationssystem, das vom Kern bereitgestellt wird und das wir normalerweise zum Importieren und Exportieren unserer Konfigurationen verwenden. Wenn wir diese Aktionen über die drush-Befehle [config:import] und [config:export] ausführen, lösen wir im Grunde die gleichen Aktionen aus, die wir hier sehen würden. Aber sehen wir uns mal an, was da drin ist.
OK, hier haben wir bereits eine weitere Registerkarte neben den Standardregisterkarten. Dies ist die Registerkarte "Ignorieren", auf der wir arbeiten müssen. Schauen wir uns an, wie sie aussieht.
Es ist ziemlich einfach. Nur ein Formular, in das wir unsere Konfigurationen eintragen können, die wir ignorieren wollen. Die Leute, die es erstellt haben, beschreiben sogar, wie man es benutzt. Danke, Leute! Ich werde die Beispiele, die es dort gibt, nicht duplizieren, sondern mich stattdessen auf unseren speziellen Anwendungsfall konzentrieren. Wir müssen unsere E-Mail nur für die lokale Entwicklung verwenden. Die nächsten Dinge, die wir brauchen, sind:
- wenn wir die Konfigurationen exportieren, sollte unsere E-Mail nicht mit exportiert werden
- Wenn wir die Konfigurationen importieren, wollen wir nicht, dass die echte E-Mail aus der Test- oder Live-Umgebung für unsere Entwicklungszwecke verwendet wird, wir wollen also nicht, dass unsere Konfiguration überschrieben wird.
Config Ignore ist die Rettung! Es gibt nur wenige Möglichkeiten, die Konfigurationen zu beschreiben. Aber lassen Sie uns zunächst die Anfangskonfigurationen exportieren, damit wir später den Unterschied sehen können:
drush config:export
Hinweis: Bitte führen Sie den folgenden Schritt noch nicht aus. Ich mache ihn hier nur zur Erklärung.
Ich ging in die Konfiguration → System → Grundlegende Website-Einstellungen, änderte dort die E-Mail mit meiner eigenen und speicherte sie. Wenn wir nun zum Teil der Konfigurationssynchronisation zurückkehren (Konfiguration → Entwicklung → Konfigurationssynchronisation), sehen wir eine Änderung in der Datei system.site.yml und können sie durch Drücken von Unterschiede anzeigen überprüfen.
Fügen wir nun die Konfigurationszeichenfolge aus dem unten stehenden Bild in die Registerkarte "Ignorieren" ein und klicken auf die Schaltfläche "Konfiguration speichern".
Aber wenn wir jetzt wieder exportieren, würden wir beide Änderungen sehen - die eine in system.site und die andere in config_ignore.settings. Und das wollen wir nicht. Wir brauchen nur die zweite Änderung. Der Grund, warum wir jetzt beide sehen, ist, dass das Konfigurationssystem noch nicht weiß, dass es die system.site ignorieren muss. Es wäre also besser, zuerst den Datensatz im Bereich Ignorieren hinzuzufügen, zu exportieren, dann die E-Mail zu ändern und zu speichern. OK, dann machen wir es dieses Mal richtig.
Wir besuchen die Registerkarte Ignorieren und fügen eines der folgenden Elemente hinzu:
- system.site → Beachten Sie, dass dadurch die gesamte Seite "Grundlegende Website-Einstellungen" ignoriert würde.
- system.site:mail → Damit würde nur der E-Mail-Teil der Einstellung ignoriert. Haben Sie den Doppelpunkt vor "mail" bemerkt? So legen wir fest, dass nur ein bestimmter Schlüssel aus einer Konfigurationsdatei ignoriert werden soll. Lassen Sie uns jetzt mit dieser Einstellung fortfahren. Diesmal sollten wir folgendes erhalten:
Wir sind bereit für den Export über:
drush config:export
Damit stellen wir sicher, dass die E-Mail bei der nächsten Änderung ignoriert wird. Dieses Mal sehen wir nur die Änderung in "config_ignore.settings". Das ist das, was wir erwarten. Ändern wir nun diese E-Mail. Danach wollen wir sehen, was die Registerkarte "Synchronisieren" anzeigt.
Das System ist intelligent genug, um den Unterschied zu erkennen, aber es ignoriert ihn und lässt uns sogar wissen, dass er bereits ignoriert wurde. Jetzt sehen wir nur, dass es eine Änderung gibt, aber wir haben nicht die Schaltfläche, um sie zu sehen. Jetzt können wir den E-Mail-Wert nach Belieben ändern. Da wir nur die E-Mail ignoriert haben, wird jede andere Änderung in der system.site vom System als echte Änderung behandelt, d. h. sie wird nicht ignoriert, es sei denn, wir setzen die gesamte system.site in den Bereich "Ignorieren" oder einen anderen ihrer Schlüssel, so wie wir es mit der E-Mail getan haben. Jeder neue Eintrag sollte in eine neue Zeile gesetzt werden. So funktioniert das Modul Config Ignore.
Ich bin mir sicher, dass Sie dies bereits bemerkt haben, aber ich möchte es nur der Vollständigkeit halber erwähnen. Diese Konfiguration sollte nun in jeder Umgebung mit ihrem tatsächlichen Wert eingerichtet werden, was bedeutet, dass Sie die Mails in der Test-, Live- oder einer anderen Umgebung weiterhin aktualisieren müssen. Sie wird weder durch Import- noch durch Export-Aktionen ersetzt.
Das würde mit jeder Konfiguration funktionieren, auch wenn es eine benutzerdefinierte ist, die wir selbst definiert haben. Denken Sie nur daran, dass das Ignorieren einer neuen Konfiguration diese leer lassen würde, auch wenn sie einen Wert in der lokalen Umgebung hat. Der Export würde jedoch die yml-Datei erzeugen, so dass sie überall verfügbar wäre.
Dies ist eine kurze Anleitung für die Verwendung des Moduls Config Ignore. Wir möchten auch auf einige Unterschiede zwischen ihm und dem Modul Config Split hinweisen. Sie haben beide ihre Stärken. Wie entscheiden wir also, welches wir verwenden? Nun, das hängt von unserem Anwendungsfall ab, aber sehen wir uns ihre Spezifikationen an:
- Config Ignore - einfacher zu benutzen, näher an der Kernfunktionalität. Das Hinzufügen einer weiteren Konfiguration zum Ignorieren ist so einfach wie das Eintragen in das Formular. Allerdings muss man in jeder Umgebung die gleiche Konfiguration verwenden. Wenn nur ein paar Datensätze hinzugefügt werden, ist dies jedoch kein wirkliches Problem.
- Config Split - ist leistungsfähiger und bietet die Möglichkeit, alle möglichen Umgebungen im Voraus zu definieren. Es ermöglicht uns, die Konfigurationen, die wir für jede Umgebung wünschen, im Voraus zu definieren und sie nach dem Import zu vergessen. Es gibt auch die Möglichkeit, ein ganzes Modul zu konfigurieren, das pro Umgebung aktiviert oder deaktiviert wird, was sehr viel einfacher ist. Allerdings ist dies etwas schwieriger einzurichten und zu verwenden.
Letzten Endes ist es eine Frage der Vorliebe.
Ich hoffe, Sie finden diese Anleitung nützlich!
ABONNIEREN SIE UNSEREN NEWSLETTER
Teilen Sie diesen Artikel: