ฉันไม่สามารถตั้งค่าคลาสนิยามไอเท็มสำหรับฟิลด์การกำหนดค่าได้
ฉันพยายามดำเนินการ hook_entity_bundle_field_info_alter()
แต่มันใช้งานไม่ได้
ฟังก์ชัน hook_entity_bundle_field_info_alter (&$fields, \Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle) {
ถ้า ($entity_type->id() === 'my_entity_type_id') {
foreach ($fields เป็น $field) {
ถ้า ($field->getType() === 'ไฟล์') {
$field->getItemDefinition()->setClass(AnswerFileItem::class);
}
}
}
}
ดูเหมือนว่า Drupal จะเพิกเฉยและสร้างรายการโดยใช้คลาสพื้นฐาน
คลาสรายการไฟล์ของฉัน:
ใช้ Drupal\file\Plugin\Field\FieldType\FileItem;
คลาส AnswerFileItem ขยาย FileItem {
/**
* {@inheritDoc}
*/
ฟังก์ชั่นสาธารณะ getUploadLocation ($ data = []) {
$data += ['my_entity_type_id' => $this->getEntity()];
ส่งคืนพาเรนต์::getUploadLocation($data);
}
}
โดยทั่วไปฉันต้องการเพิ่มข้อมูลโทเค็นเพิ่มเติมในฟิลด์การกำหนดค่าทั้งหมดในเอนทิตี_type_id ที่กำหนด
คลาสเอนทิตีไม่สำคัญ อาจเป็นได้ โหนด
.
ฉันคิดว่าปัญหาอยู่ใน รายการฟิลด์รายการ
เนื่องจากใช้คลาสรายการฟิลด์ผิด