ฉันลบล้างการเติมข้อความอัตโนมัติในโมดูลที่กำหนดเอง แต่ฉันไม่รู้ว่าฉันจะเปลี่ยนลำดับการแสดงผล (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;
}
}
ได้โปรดช่วยฉันหน่อยได้ไหม ?
ขอขอบคุณ.