Scriam un cârlig de actualizare pentru a adăuga un câmp nou la o entitate personalizată și urmam modelul afișat aici
https://www.drupal.org/node/2554097
/**
* Adăugați câmpul „revision_translation_affected” la entitățile „nod”.
*/
funcția node_update_8001() {
// Instalează definiția în care a avut acest câmp
// \Drupal\node\Entity\Node::baseFieldDefinitions()
// la momentul în care a fost scrisă această funcție de actualizare. Dacă/când codul este
// implementat care modifică acea definiție, modulul corespunzător trebuie
// implementează o funcție de actualizare care invocă
// \Drupal::entityDefinitionUpdateManager()->updateFieldStorageDefinition()
// cu noua definiție.
$storage_definition = BaseFieldDefinition::create('boolean')
->setLabel(t('Traducerea versiunii afectată'))
->setDescription(t('Indica daca ultima editare a unei traduceri apartine revizuirii curente.'))
->setReadOnly(TRUE)
->setRevisionable(TRUE)
->setTranslatable(TRUE);
\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('revision_translation_affected', 'node', 'node', $storage_definition);
}
Am simțit că dubleam BaseFieldDefinition atât în clasa de entitate personalizată, cât și în fișierul de instalare. Nu ar trebui să pot folosi funcția statică
funcția publică statică baseFieldDefinitions(EntityTypeInterface $entity_type)
din clasa de entitate pentru a încărca definiția câmpului și a o instala?