Мне нужно добавить столбец в таблицу, показанную на странице со списком слов, определенных для сайта. Как мне этого добиться?
Мне нужно добавить столбец в таблицу, показанную на странице со списком слов, определенных для сайта. Как мне этого добиться?
Ответы:
Вам нужно переопределить класс, генерирующий выходные данные построителя списка на этой странице, а затем заполнить методы тем, что вы хотите:
/**
* {@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);
}
Посмотрите этот связанный вопрос: можете ли вы изменить класс построителя списка, используемый сущностью?
Итак, по существу:
function mymodule_entity_type_alter(array &$entity_types) {
/** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
$entity_types['taxonomy_vocabulary']->setListBuilderClass('Drupal\mymodule\VocabularyListBuilder');
}
Затем в папке mymodule / src создайте файл VocabularyListBuilder.php и скопируйте его из файла core / modules / taxonomy / src / VocabularyListBuilder.php. и измените два указанных выше метода для вывода (так как они будут в основном идентичны).
Вы также можете сделать это со страницей просмотра, но для архивных целей хотел объяснить, как это работает в целом для ядра Drupal. Классы построения списков - это классная и полезная новинка для D8.