Sto effettuando il porting di un modulo da Drupal 7 a Drupal 8. Nelle impostazioni di configurazione di questo modulo ho bisogno di ottenere l'elenco dei tipi di campo attualmente esistenti.
In Drupal 7, questo è stato ottenuto usando la field_info_field_types()
funzione.
In Drupal 8 (8.0.0-rc3), viene visualizzato l'errore "la funzione non esiste", nonostante le informazioni fornite da una pagina della Guida di riferimento dell'API Drupal , chiaramente obsolete .
Quindi, indagando, ho trovato una pagina DrupalContrib , in cui la funzione è dichiarata obsoleta, e proponendo di utilizzare ora Drupal::service('plugin.manager.entity.field.field_type')->getDefinitions()
.
Ma usandolo si genera un altro errore "Servizio sconosciuto plugin.manager.entity.field.field_type", fortunatamente associato al suggerimento "Intendi plugin.manager.field.field_type?"
Quindi ho provato a usare Drupal::service('plugin.manager.field.field_type')->getDefinitions()
e wow: ho ottenuto l'array previsto di tipi di campo.
Ma ogni membro dell'array (un tipo di campo) ora è un oggetto (anziché un array figlio) e i dati che sto cercando sono nidificati all'interno di proprietà protette, quindi non posso accedervi.
In questa fase, sono bloccato. Ho considerato che potrebbe esistere una classe che potrei espandere per navigare attraverso questi dati, ma senza fortuna: in particolare non sono nemmeno riuscito a capire quale sia il componente di Drupal 8 in cui le definizioni dei tipi di campo sono centralizzate.