Puncte:0

Cum se modifică articolele de comandă în entitatea de completare automată?

drapel sn

Am suprascris modificarea completării automate în modulul meu personalizat, dar nu știu cum pot schimba ordinea de afișare (DESC sau ASC)

<?php

namespace Drupal\alter_entity_autocomplete;

utilizați Drupal\Component\Utility\Html;
utilizați Drupal\Component\Utility\Tags;
utilizați Drupal\Core\Entity\EntityAutocompleteMatcherInterface;
utilizați Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface;

/**
 * Clasa Matcher pentru a obține rezultate de completare automată pentru referință la entitate.
 */
clasa EntityAutocompleteMatcher implementează EntityAutocompleteMatcherInterface
{

  /**
   * Managerul de pluginuri de gestionare a selecției de referință a entității.
   *
   * @var \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface
   */
  protejat $selectionManager;

  /**
   * Construiește un obiect EntityAutocompleteMatcher.
   *
   * @param \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface $selection_manager
   * Managerul de pluginuri de gestionare a selecției de referință a entității.
   */
  funcția publică __construct(SelectionPluginManagerInterface $selection_manager)
  {
    $this->selectionManager = $selection_manager;
  }

  /**
   * {@inheritDoc}
   */
  funcția publică getMatches($target_type, $selection_handler, $selection_settings, $șir = '')
  {
    $potriviri = [];

    $options = $selection_settings + [
        'target_type' => $target_type,
        'handler' => $selection_handler,
      ];
    $handler = $this->selectionManager->getInstance($options);

    if (isset($șir)) {
      // Obține o serie de entități care se potrivesc.
      $match_operator = !empty($selection_settings['match_operator']) ? $selection_settings['match_operator'] : 'CONTINE';
      $match_limit = isset($selection_settings['match_limit']) ? (int)$selection_settings['match_limit'] : 50;
      $entity_labels = $handler->getReferenceableEntities($string, $match_operator, $match_limit);

      // Circulați prin entități și convertiți-le în ieșire de completare automată.
      foreach ($entity_labels ca $values) {
        foreach ($valori ca $entity_id => $label) { 
          //->sort('id', 'DESC')
          $entity = \Drupal::entityTypeManager()->getStorage($target_type)->load($entity_id);
          $entity = \Drupal::service('entity.repository')->getTranslationFromContext($entity);

          $key = $label . '(' . $entity_id . ')';
          // Eliminați lucruri precum spațiile albe de pornire/finală, întreruperi de linie și etichete.
          $key = preg_replace('/\s\s+/', ' ', str_replace("\n", '', trim(Html::decodeEntities(strip_tags($key)))));
          // Numele care conțin virgule sau ghilimele trebuie să fie împachetate între ghilimele.
          $key = Tag-uri::encode($key);
          $label = $label . '(' . $entity_id . ')';
          $match[] = ['value' => $key, 'label' => $label];
        }
      }
    }

    returnează $match;
  }

}

Ma poti ajuta te rog ? Mulțumesc.

leymannx avatar
drapel ne
Se pare că trebuie doar să inversați matricea `$matches`, nu? https://www.php.net/manual/en/function.array-reverse.php
L.wadii avatar
drapel sn
Bună idee, am făcut-o return array_reverse($match) Mulțumesc.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.