ฉันเขียน hook อัปเดตเพื่อเพิ่มฟิลด์ใหม่ให้กับเอนทิตีที่กำหนดเองและทำตามรูปแบบที่แสดงที่นี่
https://www.drupal.org/node/2554097
/**
* เพิ่มฟิลด์ 'revision_translation_affected' ให้กับเอนทิตี 'node'
*/
ฟังก์ชัน node_update_8001() {
// ติดตั้งคำจำกัดความที่ฟิลด์นี้มี
// \Drupal\node\Entity\Node::baseFieldDefinitions()
// ณ เวลาที่เขียนฟังก์ชันอัพเดตนี้ ถ้า / เมื่อเป็นรหัส
// ปรับใช้ที่เปลี่ยนคำจำกัดความนั้น โมดูลที่เกี่ยวข้องจะต้อง
// ใช้ฟังก์ชั่นอัพเดทที่เรียกใช้
// \Drupal::entityDefinitionUpdateManager()->updateFieldStorageDefinition()
// กับนิยามใหม่
$storage_definition = BaseFieldDefinition::create('บูลีน')
->setLabel(t('การแก้ไขการแปลได้รับผลกระทบ'))
->setDescription(t('ระบุว่าการแก้ไขล่าสุดของการแปลเป็นของการแก้ไขปัจจุบันหรือไม่'))
->ตั้งค่าอ่านอย่างเดียว(จริง)
->ตั้งค่าแก้ไขได้(จริง)
->setTranslatable(จริง);
\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('revision_translation_affected', 'node', 'node', $storage_definition);
}
ฉันรู้สึกว่าฉันกำลังทำซ้ำ BaseFieldDefinition ทั้งในคลาสเอนทิตีที่กำหนดเองและในไฟล์ติดตั้ง ฉันไม่ควรใช้ฟังก์ชันคงที่
ฟังก์ชันสแตติกสาธารณะ baseFieldDefinitions (EntityTypeInterface $entity_type)
จากคลาสเอนทิตีเพื่อโหลดข้อกำหนดของฟิลด์และติดตั้งหรือไม่