Comment ajouter une colonne au tableau affiché dans la page de liste de vocabulaire?

9

J'ai besoin d'ajouter une colonne au tableau affiché dans la page répertoriant les vocabulaires définis pour un site. Comment puis-je atteindre cet objectif?

liste de vocabulaire

Sonam Singh
la source

Réponses:

10

Vous devrez remplacer la classe générant la sortie du générateur de liste sur cette page, puis remplissez les méthodes avec ce que vous voulez:

  /**
   * {@inheritdoc}
   */
  public function buildHeader() {
    $header['label'] = t('Vocabulary name');
    $header['foo'] = t('Custom Header');
    return $header + parent::buildHeader();
  }

  /**
   * {@inheritdoc}
   */
  public function buildRow(EntityInterface $entity) {
    $row['label'] = $entity->label();
    $row['foo'] = 'custom_value';
    return $row + parent::buildRow($entity);
  }

Voir cette question connexe: pouvez-vous modifier la classe de générateur de liste utilisée par une entité?

Donc, en substance:

function mymodule_entity_type_alter(array &$entity_types) {
  /** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
  $entity_types['taxonomy_vocabulary']->setListBuilderClass('Drupal\mymodule\VocabularyListBuilder');
}

Ensuite, dans votre dossier mymodule / src, créez un VocabularyListBuilder.php et copiez-le depuis le core / modules / taxonomy / src / VocabularyListBuilder.php et modifiez les deux méthodes ci-dessus pour votre sortie (car elles seront fondamentalement identiques).

Vous pouvez également le faire avec une page Afficher également, mais à des fins d'archivage, je voulais expliquer comment cela fonctionne en général pour le noyau Drupal. Les classes de générateur de listes sont une nouvelle chose D8 tellement cool et utile.

Kevin
la source