Drupal 8 variable_get


9

Ich habe einen Code in Drupal 7, der variable_get verwendet. Nun würde Ich mag den Code in Drupal 8. So las ich schreiben dies aber sein hat mir nicht viel helfen.

Wie schreibe ich diesen Code in Drupal 8 aus dem Code in Drupal 7?

$types = array_values(variable_get('test_content_types', array()));

oder dieses

'#default_value' => variable_get('test_content_types', array()),

Ein Vorschlag.

Antworten:


16

In Drupal 7

 $data =  variable_get('test_content_types');

In Drupal 8

 $data = \Drupal::state()->get('test_content_types'); 

Weitere Informationen zu "get", "set" und "delete" finden Sie unter - Schritt 5: So aktualisieren Sie D7-Variablen auf das D8-Statussystem .


Danke @ darol100 .. Der Link ist nett .. Jetzt verstehe ich. Also kann ich $ data = \ Drupal :: state () -> get ('test_content_types', array ()) schreiben;
SakaSerbia

7
Beachten Sie, dass in D8 ein Unterschied zwischen Status und Konfiguration besteht. Wie unter drupal.org/developing/api/8/configuration angegeben : "In der Konfiguration können Informationen gespeichert werden, die von der Entwicklung bis zur Produktion synchronisiert werden sollen. Diese Informationen werden häufig während der Site-Erstellung erstellt und normalerweise nicht von regulären Benutzern generiert Während des normalen Standortbetriebs. Sie sollten die Status-API und nicht die Konfiguration zum Speichern lokaler Variablen verwenden, die nicht zwischen Instanzen übertragen werden sollen. Verwenden Sie den Status für ausgeblendete Systemwerte und wenn Sie ihn niemals zwischen Umgebungen bereitstellen möchten. "
Marcvangend

5

Die akzeptierte Antwort ist die halbe Antwort. Wie Marcvangend bemerkt, gibt es in Drupal 8 zwei Optionen für das, was früher in der Variablentabelle gespeichert war und mit variable_set()und gespeichert und abgerufen wurde variable_get(). Die erste, die in der Antwort von darol100 dokumentiert ist, ist die Status- API .

Die zweite ist die Konfigurations-API und sollte in den meisten Fällen verwendet werden, in denen Sie ein Konfigurationsformular haben. In Ihrem Modul ist beispielsweise mindestens eine Konfigurationsinstallationsdatei erforderlich config/install/example.settings.yml. Für eine einzelne Konfiguration (mit mehreren potenziellen Werten) kann diese Datei beispielsweise Folgendes enthalten:

test_content_types: - article

Und dann verwenden Sie den Wert mit:

$types = \Drupal::config('example.settings')->get('test_content_types');

Oder ändern Sie die gespeicherten Werte mit:

\Drupal::service('config.factory')
  ->getEditable('example.settings')
  ->set('test_content_types', ['article', 'page'])
  ->save();

Siehe auch die Drupal 8-Dokumentation für D7- bis D8-Konfigurationsaktualisierungen und die Verwendung der Konfiguration in Modulen .


1
Für mich ist dies die richtige Antwort auf die Frage. Ich mache gerade den Übergang von Drupal 7 und es hat mir sehr geholfen.
Geat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.