¿Cómo agrego una columna a la tabla que se muestra en la página de listado de vocabulario?

9

Necesito agregar una columna a la tabla que se muestra en la página que enumera los vocabularios definidos para un sitio. ¿Cómo puedo conseguir esto?

listado de vocabulario

Sonam Singh
fuente

Respuestas:

10

Debería anular la clase que genera la salida del generador de listas en esta página y luego completar los métodos con lo que desea:

  /**
   * {@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);
  }

Consulte esta pregunta relacionada: ¿Puede cambiar la clase de generador de listas utilizada por una entidad?

Entonces, en esencia:

function mymodule_entity_type_alter(array &$entity_types) {
  /** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
  $entity_types['taxonomy_vocabulary']->setListBuilderClass('Drupal\mymodule\VocabularyListBuilder');
}

Luego, en su carpeta mymodule / src, cree un VocabularyListBuilder.php, copie desde core / modules / taxonomy / src / VocabularyListBuilder.php y modifique los dos métodos anteriores para su salida (ya que serán básicamente idénticos).

También podría hacer esto con una página Ver, pero para fines de archivo quería explicar cómo funciona esto en general para Drupal core. Las clases de generador de listas son una cosa nueva y útil de D8.

Kevin
fuente