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

Création d'un objet de connexion à la base de données

05/07/2025, by Ivan

L’interaction avec la base de données doit se faire via un objet de connexion à la base de données. Plusieurs scénarios nécessitent une attention particulière :

1. Dans un code procédural, par exemple les fichiers *.module, *.inc ou scripts :
La meilleure façon de créer une instance de l’objet de connexion à la base de données est d’utiliser le Service Container.

Exemple :

$database = \Drupal::database();
// Ou
$database = \Drupal::service('database');

Cela renverra un objet de connexion configuré pour se connecter à la base de données principale par défaut, telle que définie dans la configuration de la base de données dans le fichier settings.php.

2. Pour des raisons historiques et techniques, le type retourné par \Drupal::database() est \Drupal\Core\Database\Connection, et il est donc parfois appelé $connection.
 
3. Dans du code orienté objet (OOP) :

  • Dans certains cas, l’objet de connexion à la base de données est déjà disponible en tant que membre de la classe courante ; par exemple, de nombreux plugins et services disposent de $this->database (ou $this->connection) comme membre représentant la connexion à la base.
  • Si possible, utilisez l’injection de dépendances (DI) pour utiliser le service @database ou $container->get('database') afin d’injecter la connexion à la base de données.
  • Si ce n’est pas possible (comme dans une méthode statique de classe), utilisez \Drupal::database().
  • Si les services ne sont pas encore disponibles, \Drupal\Core\Database\Database::getConnection() permet d’obtenir une connexion à la base.
  • Dans les tests unitaires, le noyau et le container ne sont pas chargés. Les tests unitaires ne devraient généralement pas accéder à la base de données. Un test unitaire nécessitant un service de base de données doit être converti en test d’intégration (kernel test).
  • Dans les tests kernel et fonctionnels, on a accès à $this->container->get('database'). Certains auteurs remarquent que le container référencé par la classe de test peut ne pas être synchronisé avec le container actuel durant la requête. Dans ce cas, l’auteur peut appeler $this->rebuildContainer() puis accéder de nouveau à $this->container->get('database').

Utiliser une autre connexion à la base de données

Si votre site utilise plusieurs bases de données, pour exécuter une requête sur une base autre que celle par défaut, utilisez Database::getConnection(). Par exemple :

$connection = \Drupal\Core\Database\Database::getConnection('default', 'other_database');

Cela récupère la connexion à la base définie dans settings.php sous :

$databases['other_database']['default']