ฉันต้องการเพิ่มคอลัมน์ในตารางที่แสดงในหน้าเว็บที่แสดงรายการคำศัพท์ที่กำหนดไว้สำหรับไซต์ ฉันจะบรรลุสิ่งนี้ได้อย่างไร
ฉันต้องการเพิ่มคอลัมน์ในตารางที่แสดงในหน้าเว็บที่แสดงรายการคำศัพท์ที่กำหนดไว้สำหรับไซต์ ฉันจะบรรลุสิ่งนี้ได้อย่างไร
คำตอบ:
คุณจะต้องแทนที่คลาสที่สร้างเอาต์พุต list builder ในหน้านี้จากนั้นกรอกวิธีการที่คุณต้องการ:
/**
* {@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 ใหม่ที่ยอดเยี่ยมและมีประโยชน์