Как подключить Drupal::database(); в стороннем файле?

Ссылка скопирована
1 ответ

Я создал сторонний php файл в корне сайта и хочу подключить в него базу от друпала. (Сайт работает нормально)
В файле тпишу:

<?php  $autoloader = require_once 'autoload.php';  $database = Drupal::database();  $qconcurs = $database->query("SELECT {node}"); $qv = (array)$qconcurs->fetchAll(); print_r($qv); ?>

<?php $autoloader = require_once 'autoload.php'; $database = Drupal::database(); $qconcurs = $database->query("SELECT {node}"); $qv = (array)$qconcurs->fetchAll(); print_r($qv); ?>

Но ожидаемо не работает. Вопрос в том как подключить DB именно под друпаловской оберткой.

Дополнительно:

Почитайте логи ошибок

Ответы:

Нужен бутстрап ядра, смотрите как это сделано в index.php файле

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Для подключения Drupal::database(); в стороннем файле вам понадобится использовать метод Drupal::service(). Ниже приведен пример кода, который показывает, как это можно сделать:

use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;
 
// Подключаем ядро Drupal.
$autoloader = require_once 'path/to/autoload.php';
$kernel = DrupalKernel::createFromRequest(Request::createFromGlobals(), $autoloader, 'prod');
 
// Используем service для получения доступа к базе данных.
$database = $kernel->getContainer()->get('database');

use Drupal\Core\DrupalKernel; use Symfony\Component\HttpFoundation\Request; // Подключаем ядро Drupal. $autoloader = require_once 'path/to/autoload.php'; $kernel = DrupalKernel::createFromRequest(Request::createFromGlobals(), $autoloader, 'prod'); // Используем service для получения доступа к базе данных. $database = $kernel->getContainer()->get('database');

В данном примере мы используем DrupalKernel::createFromRequest() для создания ядра Drupal и затем получаем доступ к сервису базы данных с помощью метода get() контейнера. Теперь вы можете использовать $database для выполнения запросов к базе данных в вашем стороннем файле.

Убедитесь, что путь к autoload.php указан правильно и что файл, в котором вы выполняете этот код, находится внутри корневой директории Drupal. Также убедитесь, что у вас есть необходимые разрешения для доступа к базе данных.

Этот метод обеспечивает безопасное и правильное подключение к базе данных Drupal из стороннего файла. Надеюсь, это поможет вам решить вашу проблему!

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно