Drupal 8カスタムモジュールでエンティティを作成しました。今のところ、それはベースフィールドを持つエンティティにすぎません。
これらの基本フィールドをビューに公開したい。
エンティティがビューウィザードページに表示されていますが、ビューを作成するときに、追加できる基本フィールドがなく、ビューがそこに配置するデフォルトフィールドが壊れている/欠落していると表示されます。
例としてコメントモジュールを参照し、さまざまなビュープラグインを定義してみましたが、あまりうまくいきません。
エンティティコントローラでbaseFieldDefinitions($entity_type)
を定義しています。このエンティティとそのフィールドをビューに公開するには、他に何が必要ですか?
Drupalと同様に、 hook_views_data() を実装する必要があります。 comment.views.inc を参照してください。
これはクラスアノテーションを介して可能になりました。他の回答で言及されているフックのドキュメントによると:
エンティティのビューデータを提供するには、このフックを実装する代わりに、 \ Drupal\views\EntityViewsDataInterface を実装するクラスを作成し、エンティティクラスの「views」アノテーションでこれを参照します。インターフェースのgetViewsData()メソッドの戻り値は、このフックと同じです。
EntityViewsData
を拡張すると、エンティティが統合されます。
例:
use Drupal\views\EntityViewsData;
class CustomEntityViewsData extends EntityViewsData {
public function getViewsData() {
$data = parent::getViewsData();
return $data;
}
}
Drupalコンソールのコンテンツエンティティジェネレーターを使用する場合、ビューの統合が自動的に含まれます。