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?
la source
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?
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.