Как я могу использовать Slim Micro framework внутри Drupal?

Доброе утро, У меня есть вопрос об использовании Slim внутри Drupal: у меня есть существующий проект веб-сайта, созданный с помощью Drupal на моем сервере apache. Моя работа заключалась в том, чтобы добавить еще одну часть к существующему веб-сайту, и я решил работать без Drupal, но с Slim micro framework (v2). Закончив работу над своим веб-сайтом, я создал папку в корне папки проекта Drupal и поместил свой веб-сайт в эту папку.

Так выглядит папка Drupal с новой папкой. (папки могут быть сценариями, разным, ... а файлы могут быть .htaccess, index.php, ...)

После этого я пытаюсь получить доступ к своему веб-сайту по этому URL-адресу: http://www.thewebsite.com/MYNEWFOLDER/, и он перенаправляет меня на маршрут «/», который я добавил в свой файл route.php: все нормально.

$app->get('/', function () use ($app){
MYCODE});

Затем я пробую http://www.thewebsite.com/MYNEWFOLDER/admin, потому что есть маршрут «/ admin», который я также добавил в свой файл route.php, но вместо доступа к этой части веб-сайта он перенаправляет меня на страницу ошибки 404 drupal, на которой написано: «MYNEWFOLDER / admin "не найден. '.

$app->get('/admin(/)', function (){
MYCODE});

У меня вопрос: как я могу сказать Drupal, что эту папку MYNEWFOLDER нужно игнорировать, и как я могу получить доступ к http://www.thewebsite.com/MYNEWFOLDER/admin без перенаправления Drupal?

Хорошего дня !

(Извините за мой английский, кстати ^^)

Вы тестировали свой тонкий экземпляр с помощью itelf, чтобы убедиться, что он работает на 100%, прежде чем помещать его в drupal? например Этот 404 на самом деле не говорит, является ли проблема тонким или drupal

Qiniso 24.05.2018 16:54

Я никогда не использую Drupal, но если вы используете Apache и .htaccess, я считаю, что вы можете создать шаблон RewriteRule для соответствия MYNEWFOLDER и указать, какой фактический index.php использовать. Однако для меня это настроить slim как другое приложение или, если вы не можете, может быть в его собственном отдельном субдомене.

Zamrony P. Juhara 24.05.2018 23:04

Страница 404 - это страница, на которой Drupal не может найти маршрут, я имею в виду, что весь стиль страницы соответствует стилю Drupal, поэтому я уверен, что Drupal блокирует активность Slim.

J. Johny 25.05.2018 08:52

Я уже пытался переписать правило в .htaccess, но у меня это не сработало ^^.

J. Johny 25.05.2018 08:53

@ J.Johny Где это работает? Я думаю, вы могли бы добавить какое-то правило в htaccess Drupal, чтобы игнорировать все URL-адреса, идущие в подкаталог вашего тонкого приложения, а затем иметь отдельный собственный htaccess для slim. Вы пробовали это?

rineez 17.12.2018 13:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
5
195
1

Ответы 1

Drupal 7 и Slim 3:

Используйте Form API для создания маршрута с использованием аргумента загрузки: Вам нужно будет направить объект HTTP-запроса Drupal в Slim.

require 'vendor/autoload.php';

function my_modulename_menu() {
   $items['my/page/%my_modulename_somefunction'] = array(
    'page arguments' => array(2),
    'access arguments' => array('access content'),

return $items;

}

function my_modulename_somefunction_load($var) {

   $app = new \Slim\App;
   $request = request_path(); // set the Drupal request object here

   if ($_SERVER['REQUEST_URI'] == "my/page/" . $var) {

      $app->get('/my/page/{passed}', function ($request, $response, array $args) {

      $stuff = $args['passed']

      // do something with your data here

      return $response->withJson($stuff);

    });

    $app->run();
    exit;
  }

}

Это будет выводить все, что передается после / my / page / пользователю, независимо от уровня тематики Drupals и ограничено определенным путем в Drupal, не разрушая ваш веб-сервер.

https://github.com/slimphp.

Я автор этого модуля:

https://www.drupal.org/project/simple_slim_api

Дополнительная документация для D7 Form API находится здесь:

https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x

https://www.drupal.org/node/224170

Другие вопросы по теме