Я переношу модуль з Drupal 7 на Drupal 8. У налаштуваннях цього модуля мені потрібно отримати список існуючих на даний момент типів полів.
У Drupal 7 цього було досягнуто за допомогою field_info_field_types()
функції.
У Drupal 8 (8.0.0-rc3) я отримую помилку "функція не існує", незважаючи на інформацію, вказану на сторінці довідки щодо Drupal API , явно застаріла.
Тоді, досліджуючи, я знайшов сторінку DrupalContrib , де функція оголошується застарілою, і пропоную зараз її використовувати Drupal::service('plugin.manager.entity.field.field_type')->getDefinitions()
.
Але використовуючи його, виникає ще одна помилка "Невідома служба plugin.manager.entity.field.field_type", на щастя, пов'язана з пропозицією "Ви маєте на увазі plugin.manager.field.field_type?"
Тому я спробував використовувати Drupal::service('plugin.manager.field.field_type')->getDefinitions()
та wow: я отримав очікуваний масив типів полів.
Але кожен член масиву (один тип поля) тепер є об'єктом (замість дочірнього масиву), і дані, які я шукаю, вкладені в захищені властивості, тому я не можу отримати доступ до них.
На цьому етапі я застряг. Я вважав, що може існувати якийсь клас, який я міг би розширити для навігації по цих даних, але не пощастило: я, зокрема, не міг навіть зрозуміти, який компонент в Drupal 8, де визначення типів поля централізовано.