วิดเจ็ตเริ่มต้นที่ใช้สำหรับฟิลด์อ้างอิงเอนทิตี (ยกเว้นฟิลด์อ้างอิงเอนทิตีสำหรับแท็กการจัดหมวดหมู่) ถูกนำมาใช้โดย EntityReferenceAutocompleteWidget
คลาสซึ่งในนั้น formElement()
การดำเนินการส่งกลับองค์ประกอบแบบฟอร์มต่อไปนี้
$องค์ประกอบ += [
'#type' => 'entity_autocomplete',
'#target_type' => $this->getFieldSetting('target_type'),
'#selection_handler' => $this->getFieldSetting('ตัวจัดการ'),
'#selection_settings' => $selection_settings,
// รายการฟิลด์อ้างอิงเอนทิตีกำลังจัดการการตรวจสอบตัวเองผ่าน
// ข้อจำกัด 'ValidReference'
'#validate_reference' => เท็จ
'#maxlength' => 1024,
'#default_value' => isset($referenced_entities[$delta]) ? $referenced_entities[$delta] : NULL,
'#size' => $this->getSetting('ขนาด'),
'#placeholder' => $this->getSetting('ตัวยึด'),
];
แทน แบบฟอร์ม['field_name']['widget'][0]['target_id']['#default_value']
ควรตั้งรหัส แบบฟอร์ม['field_name']['widget'][0]['#default_value']
.
แบบฟอร์ม['field_name']['widget'][0]['#default_value'] = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
ตามหมายเหตุด้านข้าง หากต้องการเปลี่ยนองค์ประกอบฟอร์มที่ส่งคืนจากวิดเจ็ตฟิลด์ Drupal จะทำ hook_field_widget_complete_form_alter()
(และ hook_field_widget_complete_WIDGET_TYPE_form_alter()
) ใช้ได้เพื่อการนี้ สามารถเข้าถึงข้อมูลต่อไปนี้
- อินสแตนซ์ปลั๊กอินวิดเจ็ต (
$บริบท['วิดเจ็ต']
) ซึ่งอนุญาตให้เข้าถึง ID วิดเจ็ต (ตัวอย่างเช่น เอนทิตี_reference_เติมข้อความอัตโนมัติ, entity_reference_autocomplete_tags) กับ $context['widget']->getPluginId()
- ค่าฟิลด์ (
$บริบท['รายการ']
) ซึ่งอนุญาตให้รับประเภทเป้าหมายของฟิลด์อ้างอิง ($context['items']->getFieldDefinition()->getFieldStorageDefinition()->getSetting('target_type')
) หรือประเภทฟิลด์ ($context['items']->getFieldDefinition()->getType()
), ตัวอย่างเช่น
เมื่อเป็นไปได้ ควรใช้ hook นี้สำหรับวิดเจ็ตฟิลด์แทน hook_form_alter()
.
media_field_widget_complete_form_alter()
เป็นการดำเนินการของ hook ที่ทำโดยโมดูลสื่อ