Drupal 8 & Drupal 9 - Ajouter une propriété (basefield) à un type d'entité via une fonction update

Posté le Mercredi 25 novembre 2020 - 13:05

Voici comment ajouter un basefield slug à un type d'entité client. La définition de cette propriété se trouvant dans la méthode baseFieldDefinitions de notre type d'entité :

function dashboard_update_9005() {
  $entity_type_id = 'client'; // nom machine de notre type d'entité
  $fields = ['slug']; // champ(s) à créer
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  \Drupal::entityTypeManager()->clearCachedDefinitions();
  $entity_type = $definition_update_manager->getEntityType($entity_type_id);
  foreach ($fields as $field) {
    $fieldDefinition = $entity_type->getClass()::baseFieldDefinitions($entity_type)[$field];
    $definition_update_manager->installFieldStorageDefinition($field, $entity_type_id, $entity_type_id, $fieldDefinition);
  }
}

En adaptant la seconde ligne de la fonction, il est possible d'ajouter autant de propriétés que l'on souhaite à notre type d'entité.

Aller plus loin ?

 

Ajouter un commentaire

Ne sera pas publié

CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...