Jak dodać kolumnę do tabeli pokazanej na stronie z listą słówek?

9

Muszę dodać kolumnę do tabeli pokazanej na stronie z listą słowników zdefiniowanych dla witryny. Jak mogę to osiągnąć?

lista słownictwa

Sonam Singh
źródło

Odpowiedzi:

10

Musisz zastąpić klasę generującą dane wyjściowe konstruktora list na tej stronie, a następnie wypełnić odpowiednie metody:

  /**
   * {@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);
  }

Zobacz podobne pytanie: Czy możesz zmienić klasę konstruktora list używaną przez jednostkę?

Zasadniczo:

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

Następnie w swoim folderze mymodule / src utwórz VocabularyListBuilder.php i skopiuj z core / modules / taksonomy / src / VocabularyListBuilder.php i zmodyfikuj powyższe dwie metody (ponieważ będą one zasadniczo identyczne).

Możesz to również zrobić na stronie Wyświetl, ale dla celów archiwalnych chciałem wyjaśnić, jak to ogólnie działa w przypadku rdzenia Drupal. Klasy konstruktorów list są tak fajną i przydatną nową rzeczą D8.

Kevin
źródło