J'essaie de créer des instances d'entités Drupal à partir d'un script externe qui ne fait pas partie de Drupal ou d'un module Drupal.
Pour Drupal 7, il drupal_bootstrap
fallait charger les dépendances Drupal requises. Cependant, après une longue recherche, tout ce que j'ai trouvé pour Drupal 8 était une note drupal_bootstrap
obsolète pour Drupal 8 .
Et en effet, je reçois un
Appel à la fonction non définie drupal_bootstrap ()
quand j'essaie de l'appeler après avoir inclus comme dans
define('DRUPAL_ROOT', __DIR__ .'/../drupal');
require_once DRUPAL_ROOT . '/core/vendor/autoload.php';
require_once DRUPAL_ROOT . '/core/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
Alors, comment puis-je utiliser l'API Drupal 8 à partir d'un script extérieur?!
8
external-php-scripts
Sleidig
la source
la source
Réponses:
Pour la version actuelle de drupal 8.x:
la source
Premièrement: recherchez toujours les avis de modification. Vous pouvez les trouver ici: https://www.drupal.org/list-changes
Voici le principal traitant de
drupal_bootstrap()
: https://www.drupal.org/node/2275139Jetez un œil au contrôleur frontal de Drupal 8 (
index.php
).Vous créez une instance du noyau, puis vous lui faites gérer les demandes.
Mais comme vous ne voulez y insérer que des entités, vous ne gérerez pas les demandes. Il vous suffit d'amorcer le noyau puis d'utiliser les différents services pour ajouter vos entités. La liste des services est en place
core/core.services.yml
et est assez vaste. Vous pourriez chercherentity_manager
.De plus, D8 possède une API RESTful intégrée, vous pouvez donc peut-être simplement laisser D8 faire tout le travail pendant que vous le cinglez sur http.
la source
Je me suis finalement retrouvé avec ce code. Il a quelques vilains extras mais au moins ça marche:
la source
require_once 'your_drupal/autoload.php';
autoload.php
(ligne 4)? Cela a suffi lorsque j'ai utilisé,handleRequest
mais pas lorsque j'ai essayé de démarrer uniquement les bases pour accéder au gestionnaire d'entités.chdir()