it-swarm.com.de

Wie mache ich EntityListBuilder sortierbar?

Wenn Sie benutzerdefinierte Inhaltsentitäten definieren, können Sie EntityListBuilder verwenden, um eine Liste dieser Entitäten für Verwaltungszwecke zu erstellen.

Standardmäßig werden solche Entitäten nach ID sortiert. Es ist jedoch möglich, die Reihenfolge durch Überschreiben von EntityListBuilder :: getEntityIds () zu ändern. Dies ist jedoch nur die Bestellung der Artikel. Aber wie macht man diese Tabelle sortierbar (indem man auf die Spaltenüberschrift klickt, um aufsteigend und absteigend zu sortieren)?

4
SiliconMind

So sortiere ich meinen entityListBuilder:

ich benutze die Methode load ():

  public function load() {

    $entity_query = \Drupal::service('entity.query')->get('produits_entity');
    $header = $this->buildHeader();

    $entity_query->pager(50);
    $entity_query->tableSort($header);

    $uids = $entity_query->execute();

    return $this->storage->loadMultiple($uids);
  }

Dann baue ich meinen Header so:

  /**
   * {@inheritdoc}
   */
  public function buildHeader() {

    $header = array(
        'id' => array(
            'data' => $this->t('N° produit'),
            'field' => 'id',
            'specifier' => 'id',
            'class' => array(RESPONSIVE_PRIORITY_LOW),
        ),
        'nom' => array(
            'data' => $this->t('Nom'),
            'field' => 'name',
            'specifier' => 'name',
        ),

        'prixHT' => array(
            'data' => $this->t('Prix HT'),
            'field' => 'prixHT',
            'specifier' => 'prixHT',
        ),

        'statut' => array(
            'data' => $this->t('Actif'),
            'field' => 'actif',
            'specifier' => 'actif',
        ),

    );

    return $header + parent::buildHeader();
  }

sie müssen in Ihrem buildHeader () 2 Parameter für jedes Feld hinzufügen, das Sie sortieren möchten:

feldname und Bezeichner

10
Kevin

Die Entitätsabfrage hat keine Tablesort-Integration. Sie müssten die Abfragelogik selbst implementieren.

Für Inhaltsentitäten würde ich dringend empfehlen, sich stattdessen auf die Ansichtsintegration zu verlassen. Listenersteller sind in ihrer Funktionalität eingeschränkt und meistens nur für Konfigurationsentitäten nützlich.

7
Berdir