Ist die Datei MODULE.schema.yml erforderlich, wenn Sie die Datei MODULE.settings.yml definieren?

8

Ist das MODULE.schema.ymlerforderlich, wenn Sie das definieren MODULE.settings.yml? Es scheint, dass es auch funktioniert, wenn ich die MODULE.schema.ymlDatei aus install / schema entferne .

Jahng
quelle

Antworten:

10

Es ist nicht unbedingt erforderlich, wird jedoch dringend empfohlen, eine zu haben.

Standardmäßig überprüft Drupal das Schema nicht, dies geschieht jedoch in Tests, und es gibt ein Problem , das es aktiviert, wenn Sie das bereitgestellte Beispiel.settings.local.php / development.services.yml verwenden. Aus diesem Grund wird bei der Installation derzeit kein Fehler angezeigt, der jedoch beim Schreiben Ihres ersten Tests angezeigt wird.

Es wird derzeit verwendet, um sicherzustellen, dass die gespeicherte Konfiguration den richtigen Datentyp hat (z. B. ein Float und keine Ganzzahl). Wenn Sie das nicht richtig machen, kann dies zu Problemen und der Fähigkeit führen, die Konfiguration zu übersetzen. Weitere Dinge könnten später folgen, zum Beispiel ein Modul, das ein Einstellungsformular generiert.

Berdir
quelle
1

Die settings.yml wird nur benötigt, wenn Sie nach der Installation des Moduls Standardwerte in Ihrer Konfiguration haben möchten.

Fons Vandamme
quelle
schema.yml hat absolut nichts mit Datenbanktabellen zu tun, du meinst hook_schema ().
Berdir
Sie haben Recht, ich habe sie verwirrt, ich habe meine Antwort bearbeitet
Fons Vandamme
1

MODULE/config/install/MODULE.settings.yml Datei ist nicht obligatorisch.

MODULE.settings.ymlDatei wird grundsätzlich zum Konfigurieren von Standardwerten verwendet. Dies wirkt sich nur aus, wenn Sie das Modul zum ersten Mal installieren.

Zwei Optionen für Änderungen in MODULE.settings.yml:

  1. Deinstallieren MODULEund erneut installieren!
  2. Verwenden Sie die MODULE.installDatei und hook_update_N(&$sandbox)

zB Dateiname: MODULE/MODULE.install

    /**
     * Write a line or two here about what the updates are for.
     * This is shown to users on the update.php page.
     */
    function mymodule_update_8001(&$sandbox) {
      $config_factory = \Drupal::configFactory();
      $default_value = 'Test';
      $config_factory->getEditable('MODULE.settings')->set('config_field_key', $default_value)->save();
    }

Referenzlink

AshwinP
quelle
Meinen Sie damit, dass das Modul deinstalliert und erneut installiert werden muss, wenn die settings.yml aktualisiert wird?
Jahng
Bitte überprüfen Sie meine aktualisierte Antwort, ich hoffe, es wird Ihnen helfen.
AshwinP