Próbuję utworzyć instancje encji Drupal ze skryptu zewnętrznego, który nie jest częścią Drupala ani modułu Drupal.
W przypadku Drupala 7 konieczne było drupal_bootstrap
załadowanie wymaganych zależności Drupala. Jednak po długim poszukiwaniu Drupala 8 znalazłem notatkę, która drupal_bootstrap
jest nieaktualna dla Drupala 8 .
I rzeczywiście dostaję
Wywołanie niezdefiniowanej funkcji drupal_bootstrap ()
kiedy próbuję zadzwonić po włączeniu jak w
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);
Jak więc mogę korzystać z interfejsu API Drupal 8 ze skryptu zewnętrznego ?!
8
external-php-scripts
Sleidig
źródło
źródło
Odpowiedzi:
Dla aktualnej wersji drupal 8.x:
źródło
Po pierwsze: zawsze szukaj powiadomień o zmianach. Można je znaleźć tutaj: https://www.drupal.org/list-changes
Oto główny temat dotyczący
drupal_bootstrap()
: https://www.drupal.org/node/2275139Spójrz na przedni kontroler Drupala 8 (
index.php
).Wykonujesz instancję jądra, a następnie obsługujesz żądania.
Ale ponieważ chcesz tylko włożyć w to byty, nie będziesz obsługiwać żądań. Musisz tylko załadować jądro, a następnie użyć różnych usług, aby dodać swoje byty. Lista usług
core/core.services.yml
jest już dość duża. Możesz szukaćentity_manager
.Ponadto D8 ma wbudowany interfejs API RESTful, więc możesz po prostu pozwolić D8 wykonać całą pracę podczas pingowania go przez http.
źródło
W końcu skończyłem z tym kodem. Ma trochę brzydkich dodatków, ale przynajmniej działa:
źródło
require_once 'your_drupal/autoload.php';
autoload.php
(linia 4)? To wystarczyło, kiedy użyłem,handleRequest
ale nie przy próbie uruchomienia tylko podstaw, aby dostać się do menedżera encji.chdir()