ฉันกำลังพยายามใช้ฟิลด์เติมข้อความอัตโนมัติของเอนทิตีในรูปแบบที่เอนทิตีการเติมข้อความอัตโนมัติถูกกรองตามประเภทเนื้อหาและบางฟิลด์ของประเภทเนื้อหานั้น
ฉันรู้ว่าฉันสามารถกรองการเติมข้อความอัตโนมัติได้โดยใช้ target_bundles
ใน #selection_settings
'#selection_handler' => 'ค่าเริ่มต้น',
'#selection_settings' => [
'target_bundles' => ['my_content_type'],
]
แต่ฉันยังคงหลงทางในการกรองตามฟิลด์ในประเภทเนื้อหานี้เพิ่มเติม จากที่เจอมาเพิ่มได้นะครับ 'ตัวกรอง' => ['my_field_name' => 'my_field_value'],
ไปที่ #selection_settings
. แต่แล้วฉันจะต้องใช้วิธีกำหนดเอง #selection_handler
.
ฉันพบตัวอย่างนี้ทางออนไลน์เกี่ยวกับการใช้ปลั๊กอินตัวจัดการการเลือก
<?php
เนมสเปซ Drupal\test_module_name\Plugin\EntityReferenceSelection;
ใช้ Drupal\node\Plugin\EntityReferenceSelection\NodeSelection
/**
* ให้การควบคุมการเข้าถึงเฉพาะสำหรับประเภทเอนทิตีของโหนด
*
* @EntityReferenceSelection(
* id = "ค่าเริ่มต้น: node_by_field",
* label = @Translation("โหนดตามการเลือกฟิลด์"),
* entity_types = {"โหนด"}
* กลุ่ม = "ค่าเริ่มต้น"
* น้ำหนัก = 3
* )
*/
คลาส NodeByFieldSelection ขยาย NodeSelection {
/**
* {@inheritdoc}
*/
ฟังก์ชันที่มีการป้องกัน buildEntityQuery ($match = NULL, $match_operator = 'CONTAINS') {
$query = parent::buildEntityQuery($match, $match_operator);
$handler_settings = $this->configuration['handler_settings'];
ถ้า (!isset($handler_settings['filter'])) {
ส่งคืน $query;
}
$filter_settings = $handler_settings['ตัวกรอง'];
foreach ($filter_settings เป็น $field_name => $value) {
$query->condition($field_name, $value, '=');
}
ส่งคืน $query;
}
}
ฉันเชื่อว่าในตัวอย่างนี้พวกเขากำลังใช้ตัวจัดการการเลือกที่เรียกว่า ค่าเริ่มต้น: node_by_field
. ฉันยังใหม่กับปลั๊กอินแต่คุ้นเคยกับโมดูลต่างๆ ฉันรู้สึกว่าฉันอยู่ใกล้มาก ขอบคุณสำหรับคำแนะนำใด ๆ