Ich portiere ein Modul von Drupal 7 nach Drupal 8. In den Konfigurationseinstellungen dieses Moduls muss die Liste der aktuell vorhandenen Feldtypen abgerufen werden.
In Drupal 7 wurde dies mit der field_info_field_types()
Funktion erreicht.
In Drupal 8 (8.0.0-rc3) erhalte ich die Fehlermeldung "Funktion existiert nicht", obwohl die Informationen auf einer Drupal API-Referenzhilfeseite eindeutig veraltet sind.
Als ich dann nachforschte, fand ich eine DrupalContrib-Seite , auf der die Funktion für veraltet erklärt wurde, und schlug vor, sie jetzt zu verwenden Drupal::service('plugin.manager.entity.field.field_type')->getDefinitions()
.
Bei Verwendung wird jedoch ein weiterer Fehler "Unbekannter Dienst plugin.manager.entity.field.field_type" ausgelöst, der glücklicherweise mit dem Vorschlag "Meinen Sie plugin.manager.field.field_type?"
Also habe ich versucht Drupal::service('plugin.manager.field.field_type')->getDefinitions()
und wow: Ich habe das erwartete Array von Feldtypen.
Aber jedes Array-Mitglied (ein Feldtyp) ist jetzt ein Objekt (anstelle eines untergeordneten Arrays), und die gesuchten Daten sind in geschützten Eigenschaften verschachtelt, sodass ich nicht darauf zugreifen kann.
In diesem Stadium stecke ich fest. Ich dachte, es könnte eine Klasse geben, die ich erweitern könnte, um durch diese Daten zu navigieren, aber ohne Glück: Ich konnte insbesondere nicht einmal herausfinden, welche Komponente in Drupal 8 die Definition von Feldtypen zentralisiert.