Estou portando um módulo do Drupal 7 para o Drupal 8. Nas configurações deste módulo, preciso obter a lista dos tipos de campo existentes no momento.
No Drupal 7, isso foi alcançado usando a field_info_field_types()
função
No Drupal 8 (8.0.0-rc3), recebo o erro "a função não existe", apesar das informações declaradas na página de Ajuda de referência da API do Drupal , claramente desatualizadas.
Em seguida, investigando, encontrei uma página DrupalContrib , onde a função é declarada preterida e propondo usar agora Drupal::service('plugin.manager.entity.field.field_type')->getDefinitions()
.
Mas usá-lo dispara outro erro "Serviço desconhecido plugin.manager.entity.field.field_type", felizmente associado à sugestão "Você quer dizer plugin.manager.field.field_type?"
Então tentei usar Drupal::service('plugin.manager.field.field_type')->getDefinitions()
e uau: obtive a matriz esperada de tipos de campo.
Mas cada membro da matriz (um tipo de campo) agora é um objeto (em vez de uma matriz filho), e os dados que estou procurando são aninhados nas propriedades protegidas, portanto, não posso acessá-los.
Nesta fase, eu estou preso. Eu considerei que poderia existir alguma classe que eu pudesse expandir para navegar por esses dados, mas sem sorte: eu não conseguia descobrir qual é o componente no Drupal 8 onde as definições de tipos de campo são centralizadas.