Estou tentando criar instâncias de entidade Drupal a partir de um script externo que não faz parte do Drupal ou de um módulo Drupal.
Para o Drupal 7, havia drupal_bootstrap
que carregar as dependências necessárias do Drupal. No entanto, após uma longa pesquisa, tudo o que encontrei para o Drupal 8 foi uma observação que drupal_bootstrap
foi preterida para o Drupal 8 .
E, de fato, eu recebo um
Chamada para a função indefinida drupal_bootstrap ()
quando tento chamá-lo depois de incluir como em
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);
Então, como posso usar a API do Drupal 8 a partir de um script externo ?!
8
external-php-scripts
sleidig
fonte
fonte
Respostas:
Para a versão atual do drupal 8.x:
fonte
Em primeiro lugar: sempre procure avisos de alterações. Você pode encontrá-los aqui: https://www.drupal.org/list-changes
Aqui está o principal deles
drupal_bootstrap()
: https://www.drupal.org/node/2275139Veja o controlador frontal do Drupal 8 (
index.php
).Você cria uma instância do kernel e, em seguida, solicita que ele lide com solicitações.
Mas como você só deseja inserir entidades nele, não manipulará solicitações. Você só precisa inicializar o kernel e usar os vários serviços para adicionar suas entidades. A lista de serviços está dentro
core/core.services.yml
e é bastante grande. Você pode procurarentity_manager
.Além disso, o D8 possui uma API RESTful integrada, portanto, você poderá permitir que o D8 faça todo o trabalho enquanto o executa ping em http.
fonte
Finalmente acabei com esse código. Possui alguns extras extras feios, mas pelo menos funciona:
fonte
require_once 'your_drupal/autoload.php';
autoload.php
(linha 4)? Isso foi suficiente quando eu usei,handleRequest
mas não ao tentar inicializar apenas o básico para acessar o gerenciador de entidades.chdir()