Preciso adicionar uma coluna à tabela mostrada na página que lista os vocabulários definidos para um site. Como posso conseguir isso?
Preciso adicionar uma coluna à tabela mostrada na página que lista os vocabulários definidos para um site. Como posso conseguir isso?
Respostas:
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.