Score:0

จะเปลี่ยนรายการสั่งซื้อในเอนทิตีการเติมข้อความอัตโนมัติได้อย่างไร

ธง sn

ฉันลบล้างการเติมข้อความอัตโนมัติในโมดูลที่กำหนดเอง แต่ฉันไม่รู้ว่าฉันจะเปลี่ยนลำดับการแสดงผล (DESC หรือ ASC) ได้อย่างไร

<?php

เนมสเปซ Drupal\alter_entity_autocomplete;

ใช้ Drupal\Component\Utility\Html;
ใช้ Drupal\Component\Utility\Tags;
ใช้ Drupal\Core\Entity\EntityAutocompleteMatcherInterface
ใช้ Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface

/**
 * คลาส Matcher เพื่อรับผลการเติมข้อความอัตโนมัติสำหรับการอ้างอิงเอนทิตี
 */
คลาส EntityAutocompleteMatcher ใช้ EntityAutocompleteMatcherInterface
{

  /**
   * ตัวจัดการปลั๊กอินตัวจัดการการเลือกการอ้างอิงเอนทิตี
   *
   * @var \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface
   */
  ป้องกัน $selectionManager;

  /**
   * สร้างวัตถุ EntityAutocompleteMatcher
   *
   * @param \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface $selection_manager
   * ตัวจัดการปลั๊กอินตัวจัดการการเลือกการอ้างอิงเอนทิตี
   */
  ฟังก์ชั่นสาธารณะ __construct (SelectionPluginManagerInterface $selection_manager)
  {
    $this->selectionManager = $selection_manager;
  }

  /**
   * {@inheritDoc}
   */
  ฟังก์ชันสาธารณะ getMatches($target_type, $selection_handler, $selection_settings, $string = '')
  {
    $ตรงกัน = [];

    $ตัวเลือก = $selection_settings + [
        'target_type' => $target_type,
        'ตัวจัดการ' => $selection_handler,
      ];
    $handler = $this->selectionManager->getInstance($ตัวเลือก);

    ถ้า (isset($string)) {
      // รับอาร์เรย์ของเอนทิตีที่ตรงกัน
      $match_operator = !empty($selection_settings['match_operator']) ? $selection_settings['match_operator'] : 'มี';
      $match_limit = isset($selection_settings['match_limit']) ? (int)$selection_settings['match_limit'] : 50;
      $entity_labels = $handler->getReferenceableEntities($string, $match_operator, $match_limit);

      // วนซ้ำเอนทิตีและแปลงเป็นเอาต์พุตเติมข้อความอัตโนมัติ
      foreach ($entity_labels เป็น $values) {
        foreach ($values ​​เป็น $entity_id => $label) { 
          //->sort('id', 'DESC')
          $entity = \Drupal::entityTypeManager()->getStorage($target_type)->โหลด($entity_id);
          $entity = \Drupal::service('entity.repository')->getTranslationFromContext($entity);

          $key = $ฉลาก ' (' . $entity_id . ')';
          // ตัดสิ่งต่างๆ เช่น เริ่มต้น/ต่อท้ายช่องว่างสีขาว ตัวแบ่งบรรทัด และแท็ก
          $key = preg_replace('/\s\s+/', ' ', str_replace("\n", '', trim(Html::decodeEntities(strip_tags($key)))));
          // ชื่อที่มีเครื่องหมายจุลภาคหรือเครื่องหมายคำพูดต้องอยู่ในเครื่องหมายคำพูด
          $key = Tags::encode($key);
          $ฉลาก = $ฉลาก ' (' . $entity_id . ')';
          $matches[] = ['value' => $key, 'label' => $label];
        }
      }
    }

    ส่งคืน $match;
  }

}

ได้โปรดช่วยฉันหน่อยได้ไหม ? ขอขอบคุณ.

leymannx avatar
ne flag
ดูเหมือนว่าคุณจะต้องย้อนกลับอาร์เรย์ `$matches` เท่านั้นใช่ไหม https://www.php.net/manual/th/function.array-reverse.php
L.wadii avatar
sn flag
เป็นความคิดที่ดี ฉันคืนค่า array_reverse($matches) ขอขอบคุณ.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา