Como adiciono uma coluna à tabela mostrada na página de listagem de vocabulário?

9

Preciso adicionar uma coluna à tabela mostrada na página que lista os vocabulários definidos para um site. Como posso conseguir isso?

listagem de vocabulário

Sonam Singh
fonte

Respostas:

10

Você precisaria substituir a classe que gera a saída do construtor de lista nesta página e, em seguida, preencher os métodos com o que deseja:

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

Veja esta pergunta relacionada: Você pode alterar a classe do construtor de listas usada por uma entidade?

Então, em essência:

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

Em seguida, na sua pasta mymodule / src, crie um VocabularyListBuilder.php e copie do core / modules / taxonomy / src / VocabularyListBuilder.php e modifique os dois métodos acima para sua saída (pois eles serão basicamente idênticos).

Você também pode fazer isso com uma página Visualizar, mas, para fins de arquivamento, queria explicar como isso funciona em geral para o núcleo do Drupal. As classes do construtor de listas são uma coisa nova e útil do D8.

Kevin
fonte