Muszę dodać kolumnę do tabeli pokazanej na stronie z listą słowników zdefiniowanych dla witryny. Jak mogę to osiągnąć?
źródło
Muszę dodać kolumnę do tabeli pokazanej na stronie z listą słowników zdefiniowanych dla witryny. Jak mogę to osiągnąć?
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.