web-dev-qa-db-ja.com

カスタムエンティティをビューに公開する

Drupal 8カスタムモジュールでエンティティを作成しました。今のところ、それはベースフィールドを持つエンティティにすぎません。

これらの基本フィールドをビューに公開したい。

エンティティがビューウィザードページに表示されていますが、ビューを作成するときに、追加できる基本フィールドがなく、ビューがそこに配置するデフォルトフィールドが壊れている/欠落していると表示されます。

例としてコメントモジュールを参照し、さまざまなビュープラグインを定義してみましたが、あまりうまくいきません。

エンティティコントローラでbaseFieldDefinitions($entity_type)を定義しています。このエンティティとそのフィールドをビューに公開するには、他に何が必要ですか?

7
Coder1

Drupalと同様に、 hook_views_data() を実装する必要があります。 comment.views.inc を参照してください。

11
larowlan

これはクラスアノテーションを介して可能になりました。他の回答で言及されているフックのドキュメントによると:

エンティティのビューデータを提供するには、このフックを実装する代わりに、 \ Drupal\views\EntityViewsDataInterface を実装するクラスを作成し、エンティティクラスの「views」アノテーションでこれを参照します。インターフェースのgetViewsData()メソッドの戻り値は、このフックと同じです。

8
Brad J

EntityViewsDataを拡張すると、エンティティが統合されます。

例:

use Drupal\views\EntityViewsData;

class CustomEntityViewsData extends EntityViewsData {
  public function getViewsData() {
    $data = parent::getViewsData();
    return $data;
  }
}
2
Ioana Todea

Drupalコンソールのコンテンツエンティティジェネレーターを使用する場合、ビューの統合が自動的に含まれます。

2
Chris Weber