Ich versuche, Drupal-Entitätsinstanzen aus einem externen Skript zu erstellen, das nicht Teil von Drupal oder einem Drupal-Modul ist.
Für Drupal 7 drupal_bootstrap
mussten die erforderlichen Drupal-Abhängigkeiten geladen werden. Nach langer Suche fand ich für Drupal 8 jedoch nur eine Notiz, die drupal_bootstrap
für Drupal 8 veraltet ist .
Und in der Tat bekomme ich eine
Aufruf der undefinierten Funktion drupal_bootstrap ()
wenn ich versuche es nach dem Einfügen wie in aufzurufen
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);
Wie kann ich die Drupal 8-API von einem externen Skript aus verwenden?!
8
external-php-scripts
sleidig
quelle
quelle
Antworten:
Für die aktuelle Version von Drupal 8.x:
quelle
Erstens: Suchen Sie immer nach Änderungshinweisen. Sie finden sie hier: https://www.drupal.org/list-changes
Hier ist das Hauptthema
drupal_bootstrap()
: https://www.drupal.org/node/2275139Schauen Sie sich den Front-Controller von Drupal 8 an (
index.php
).Sie erstellen eine Instanz des Kernels und lassen ihn dann Anforderungen verarbeiten.
Da Sie jedoch nur Entitäten darin stecken möchten, werden Sie keine Anforderungen bearbeiten. Sie müssen nur den Kernel booten und dann die verschiedenen Dienste verwenden, um Ihre Entitäten hinzuzufügen. Die Liste der Dienste ist in
core/core.services.yml
und ist ziemlich groß. Sie könnten suchenentity_manager
.Außerdem ist in D8 eine RESTful-API integriert, sodass Sie D8 möglicherweise die gesamte Arbeit erledigen lassen können, während Sie über http pingen.
quelle
Ich bin endlich mit diesem Code gelandet. Es hat einige hässliche Extra-Includes, aber zumindest funktioniert es:
quelle
require_once 'your_drupal/autoload.php';
autoload.php
(Zeile 4)? Dies war ausreichend, als ich verwendet habe,handleRequest
aber nicht, wenn versucht wurde, nur die Grundlagen zu starten, um zum Entitätsmanager zu gelangen.chdir()