Können Sie die von einer Entität verwendete List Builder-Klasse ändern?

8

Es gibt eine Entität, die von einem anderen Modul erstellt wurde, und ich möchte einige der auf einer Listenseite verwendeten Felder ändern. Derzeit verwendet diese Seite die List Builder-Klasse der Entität. Gibt es eine Möglichkeit, eine neue List Builder-Klasse zu definieren, meine Änderungen vorzunehmen und diese für diese Entität zu verwenden? Ich habe dies bis zu dem Punkt verfolgt, an dem D8 die Entitätsdefinition erhält, und lade die List Builder-Klasse daraus. Ich kann hier keine Möglichkeit finden, die Definitionen zu ändern oder eine andere Klasse einzufügen.

Genauer gesagt habe ich mit ECK eine Entität erstellt und möchte die Funktionalität überschreiben EckEntityListBuilder.

rauben
quelle
hook_entity_type_info_alter oder so ähnlich.

Antworten:

16

Sie wollen so etwas:

<?php

/**
 * Implements hook_entity_type_alter().
 */
function MY_MODULE_entity_type_alter(array &$entity_types) {
  /** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
  $entity_types['node']->setListBuilderClass('Drupal\MY_MODULE\NewListBuilder');
}
benjy
quelle