logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement
07/07/2025, by Ivan

Menu

Travailler avec les entités dans Drupal est unifié et toutes les opérations CRUD sont également les mêmes pour toutes les entités. Dans cet article, nous allons découvrir comment travailler avec les entités dans du code personnalisé.

Commençons par des exemples simples.

Créer un nœud de manière programmatique 

use \Drupal\node\Entity\Node;
 
$node = Node::create([
  'type'        => 'article',
  'title'       => 'Test Druplicon',
]);
$node->save();

Pour créer un nœud, vous devez ajouter tous les champs requis, par défaut il s'agit uniquement du champ Titre. Vous pouvez aussi accéder à l'objet nœud après sa création :

$node = Node::create([
  'type'        => 'article',
  'title'       => 'Test Druplicon',
]);
$node->field_text->value = 'Texte simple';
$node->save();

La méthode create() se trouve dans la classe Node.php, si un type d'entité possède sa propre méthode create(), il est préférable de l'utiliser. Bien qu'il existe des façons universelles de créer une entité.

$node_entity_type = \Drupal::entityTypeManager()->getDefinition('node');
$node = new Node([
  $node_entity_type->getKey('bundle') => 'movie',
  $node_entity_type->getKey('label') => 'Foo',
  'field_release_date' => '1/1/2015',
]);
$node->save();

Enfin, en utilisant la méthode save(), nous sauvegardons l'entité.

Mettre à jour un nœud (entité) de manière programmatique

$nid = 234; 
$node_storage = \Drupal::entityTypeManager()->getStorage('node');
$node = $node_storage->load($nid);
 
$node->title = 'Nouveau titre';
$node->field_text = 'texte';
 
$node->save();

Nous avons détaillé l'édition des champs d'entité dans un article précédent :

http://drupalbook.org/drupal/9111-work-entity-fields-programmatically

Supprimer un nœud (entité) de manière programmatique

Si vous souhaitez supprimer un nœud, cela peut se faire en utilisant la méthode delete() :

$nid = 123;
$node = node_load($nid);
$node->delete();

Créer plusieurs nœuds (entités) de manière programmatique

Lorsque vous devez charger plusieurs nœuds, il serait coûteux de le faire un par un, car chaque nœud possède des champs et pour charger les données depuis la base de données, il faudra exécuter de nombreuses requêtes SQL. Il est beaucoup plus rapide de charger tous les nœuds en une seule fois :

$nids = db_select('node_field_data', 'n')
  ->fields('n', ['nid'])
  ->condition('title', $my_title)
  // Le tag node_access vérifie les droits d'accès.
  ->addTag('node_access')
  ->execute()
  ->fetchCol();
 
$nodes = Node::loadMultiple($nids);

Supprimer plusieurs nœuds (entités) de manière programmatique

$result = \Drupal::entityQuery("node")
  ->condition('created', strtotime('-30 days'), '=')
  ->execute();
 
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadMultiple($result);
$storage_handler->delete($entities);