Travailler avec des entités

Les différentes catégories d'entités dans Drupal

Soumis par Antoine le ven 20/03/2020 - 16:48

Une entité est un ensemble de données structurées. Il existe deux grandes catégories d’entités : les entités de configuration et les entités de contenu.

Charger des entités depuis un contrôleur dans Drupal

Soumis par Antoine le ven 20/03/2020 - 16:50

Pour charger une entité, on utilise une "storage instance" à partir du service entityTypeManager. Pour utiliser ce service, il y a deux méthodes. La simple consiste à l'appeler à l'aide du code :

\Drupal::entityTypeManager()->getStorage('id_type_entité')

Il est donc primordial de connaitre les identifiants des différents types d'entités. Pour cela, il est possible d'utiliser la commande drush suivante :

Créer une entité dans Drupal

Soumis par Antoine le sam 21/03/2020 - 12:28

Principes

Pour créer une nouvelle entité, il suffit d'utiliser la méthode create() de l'interface d'une classe de stockage d'entité. Pour obtenir une classe de stockage d'entité on utilise la fonction suivante :

$storage=\Drupal::entityTypeManager()->getStorage("identifiant d'un type d'entité")

Ensuite, on peut utiliser la méthode create() soit sur la variable $storage :

Supprimer une entité dans Drupal

Soumis par Antoine le dim 22/03/2020 - 16:19

Pour supprimer une entité, il faut commencer par la charger, puis, si le contenu existe, lui appliquer la méthode delete().

Pour rappel, on utilise la méthode getStorage('identifiant_type_entité') pour obtenir une classe de stockage d'entité. Ensuite on utilise une méthode de chargement comme load ou loadmultiple (voir l'article "charger une entité")

Dans l'exemple ci-dessous, on charge le noeud 1 avant de le supprimer :

Vérifier les entités dans Drupal

Soumis par Antoine le lun 23/03/2020 - 11:38

Avant de lancer des actions sur des entités, il peut être nécessaire de vérifier s'il s'agit d'un bien d'une entité ou son type. 

Vérifier qu'une variable contient bien une entité :

if ($entity instanceof \Drupal\Core\Entity\EntityInterface) {
}

Vérifier qu'il s'agit bien d'un noeud

if ($entity instanceof \Drupal\node\NodeInterface) {
}

Vérifier qu'il s'agit bien d'un type de contenu particulier comme un article ou une page

Créer un type de contenu lors de l'installation d'un module Drupal

Soumis par Antoine le dim 05/04/2020 - 00:47

Pour créer un type de contenu à l'aide d'un module, il faut rajoute les fichiers yaml qui décrivent ce type de contenu et tous ses champs dans le répertoire config/install du module.

Créer les fichiers yaml peut être très laborieux. C'est pourquoi il est conseillé de créer le type de contenu avec l'interface graphique puis de les exporter à l'aide de l'outil en ligne de commande drupal console. Pour savoir comment installer cet outil, lisez l'article "installer drupal console

Afficher un noeud dans un module Drupal

Soumis par Antoine le mar 07/04/2020 - 16:23

Principes

Pour afficher un noeud, il faut commencer par la charger comme décrit dans l'article "Charger des entités depuis un contrôleur". Ensuite on génère une instance de la classe view builder avec la méthode getViewBuilder() de la classe entityTypeManager puis on utilise la méthode view("entity", "view_mode" et "lang_code"). 

Afficher une vue dans un module Drupal

Soumis par Antoine le mar 07/04/2020 - 18:30

Principes

La classe views permet d'afficher des vues. Il faut donc commencer par la charger

use Drupal\views\Views;

Ensuite on récupère la vue

$view = Views::getView('liste_livre');

Enfin on génère le render array