Я пытаюсь создать экземпляры сущности Drupal из внешнего скрипта, который не является частью Drupal или модуля Drupal.
Для Drupal 7 необходимо было drupal_bootstrap
загрузить необходимые зависимости Drupal. Однако после долгого поиска все, что я нашел для Drupal 8, было запиской, которая drupal_bootstrap
устарела для Drupal 8 .
И действительно, я получаю
Вызов неопределенной функции drupal_bootstrap ()
когда я пытаюсь позвонить после того, как в
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);
Так как я могу использовать API Drupal 8 из внешнего скрипта ?!
8
external-php-scripts
sleidig
источник
источник
Ответы:
Для текущей версии drupal 8.x:
источник
Во-первых: всегда ищите уведомления об изменениях. Вы можете найти их здесь: https://www.drupal.org/list-changes
Вот основной, имеющий дело с
drupal_bootstrap()
: https://www.drupal.org/node/2275139Посмотрите на фронтальный контроллер Drupal 8 (
index.php
).Вы создаете экземпляр ядра и затем обрабатываете его запросы.
Но так как вы хотите только вставить в него сущности, вы не будете обрабатывать запросы. Вам просто нужно загрузить ядро и затем использовать различные сервисы для добавления ваших сущностей. Список услуг есть
core/core.services.yml
и довольно большой. Вы можете искатьentity_manager
.Кроме того, в D8 встроен API-интерфейс RESTful, так что вы можете просто позволить D8 выполнять всю работу, пока вы пингуете его через http.
источник
Я наконец-то закончил с этим кодом. У этого есть некоторые уродливые дополнительные включения, но по крайней мере это работает:
источник
require_once 'your_drupal/autoload.php';
autoload.php
(строка 4)? Этого было достаточно, когда я использовал,handleRequest
но не пытался загрузить только основы, чтобы добраться до менеджера сущностей.chdir()