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 ?

Commentaires

There are classic mind games that have stood the test of time and are suitable for all ages! Our The Impossible Game recreates this intellectual game, in addition to entertainment, the games here can also train some other skills such as thinking, creativity, patience... I believe Our website will bring you and every one the most relaxing and rewarding moments!

Ajouter un commentaire

Ne sera pas publié

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