Saya mencoba membuat instance entitas Drupal dari skrip eksternal yang bukan bagian dari modul Drupal atau Drupal.
Untuk Drupal 7 ada drupal_bootstrap
memuat dependensi Drupal yang diperlukan. Namun, setelah pencarian panjang semua yang saya temukan untuk Drupal 8 adalah catatan yang drupal_bootstrap
sudah usang untuk Drupal 8 .
Dan memang, saya mendapatkan
Panggil ke fungsi drupal_bootstrap () yang tidak terdefinisi
ketika saya mencoba menyebutnya setelah memasukkan seperti pada
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);
Jadi bagaimana saya bisa menggunakan Drupal 8 API dari skrip luar ?!
8
external-php-scripts
sleidig
sumber
sumber
Jawaban:
Untuk versi drupal 8.x saat ini:
sumber
Pertama: Selalu cari pemberitahuan perubahan. Anda dapat menemukannya di sini: https://www.drupal.org/list-changes
Inilah yang utama berurusan dengan
drupal_bootstrap()
: https://www.drupal.org/node/2275139Lihatlah pengontrol depan Drupal 8 (
index.php
).Anda membuat instance dari kernel dan kemudian membuatnya menangani permintaan.
Tetapi karena Anda hanya ingin memasukkan entitas ke dalamnya, Anda tidak akan menangani permintaan. Anda hanya perlu mem-bootstrap kernel dan kemudian menggunakan berbagai layanan untuk menambahkan entitas Anda. Daftar layanan dalam
core/core.services.yml
dan cukup besar. Anda mungkin mencarientity_manager
.Selain itu, D8 memiliki RESTful API bawaan, jadi Anda mungkin bisa membiarkan D8 melakukan semua pekerjaan saat Anda melakukan ping di http.
sumber
Saya akhirnya berakhir dengan kode ini. Ini memiliki beberapa tambahan jelek tapi setidaknya berfungsi:
sumber
require_once 'your_drupal/autoload.php';
autoload.php
(baris 4)? Ini sudah cukup ketika saya menggunakanhandleRequest
tetapi tidak ketika mencoba untuk boot hanya dasar-dasar untuk sampai ke manajer entitas.chdir()