Tôi cần thêm một cột vào bảng hiển thị trong trang liệt kê các từ vựng được xác định cho một trang web. Làm thế nào tôi có thể đạt được điều này?
Tôi cần thêm một cột vào bảng hiển thị trong trang liệt kê các từ vựng được xác định cho một trang web. Làm thế nào tôi có thể đạt được điều này?
Câu trả lời:
Bạn sẽ cần ghi đè lớp tạo đầu ra của trình tạo danh sách trên trang này, sau đó điền vào các phương thức với những gì bạn muốn:
/**
* {@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);
}
Xem câu hỏi liên quan này: Bạn có thể thay đổi lớp trình tạo danh sách được sử dụng bởi một thực thể không?
Vì vậy, về bản chất:
function mymodule_entity_type_alter(array &$entity_types) {
/** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
$entity_types['taxonomy_vocabulary']->setListBuilderClass('Drupal\mymodule\VocabularyListBuilder');
}
Sau đó, trong thư mục mymodule / src của bạn, hãy tạo một Từ vựngListBuilder.php và sao chép từ lõi / mô-đun / taxonomy / src / Từ vựngListBuilder.php và sửa đổi hai phương thức trên cho đầu ra của bạn (vì về cơ bản chúng sẽ giống hệt nhau).
Bạn cũng có thể làm điều này với trang Xem, nhưng với mục đích lưu trữ muốn giải thích cách thức hoạt động chung cho lõi Drupal. Các lớp xây dựng danh sách là một thứ D8 mới rất hay và hữu ích.