モジュールを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()
。フィールドタイプの予想される配列を取得しました。
しかし、各配列メンバー(1つのフィールド型)は(子配列ではなく)オブジェクトになり、探しているデータは保護されたプロパティ内にネストされているため、アクセスできません。
この段階では、行き詰まっています。これらのデータをナビゲートするために拡張できるクラスが存在する可能性があると考えましたが、運が悪かったのです。特に、フィールドタイプの定義が一元化されているDrupal 8のコンポーネントがどれであるかもわかりませんでした。