Devo aggiungere una colonna alla tabella mostrata nella pagina che elenca i vocabolari definiti per un sito. Come posso raggiungere questo obiettivo?
Devo aggiungere una colonna alla tabella mostrata nella pagina che elenca i vocabolari definiti per un sito. Come posso raggiungere questo obiettivo?
Risposte:
Dovresti sovrascrivere la classe che genera l'output del generatore di elenchi in questa pagina, quindi compilare i metodi con ciò che desideri:
/**
* {@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);
}
Vedi questa domanda correlata: puoi cambiare la classe del generatore di elenchi utilizzata da un'entità?
Quindi, in sostanza:
function mymodule_entity_type_alter(array &$entity_types) {
/** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
$entity_types['taxonomy_vocabulary']->setListBuilderClass('Drupal\mymodule\VocabularyListBuilder');
}
Quindi, nella tua cartella mymodule / src, crea un VocabularyListBuilder.php e copia dal core / modules / taxonomy / src / VocabularyListBuilder.php e modifica i due metodi sopra per il tuo output (poiché saranno sostanzialmente identici).
Potresti anche farlo con una pagina Visualizza, ma per scopi di archiviazione volevo spiegare come questo funziona in generale per il core di Drupal. Le classi del generatore di elenchi sono una cosa nuova e utile di D8.