Как я могу использовать Slim Micro Framework внутри Drupal? - PullRequest
0 голосов
/ 24 мая 2018

Доброе утро, у меня есть вопрос об использовании 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, но вместо доступа к этой части веб-сайта он перенаправляет меня на страницу ошибки drupal 404, на которой написано:« MYNEWFOLDER / admin »not found.».

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

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

У вас естьхороший день!

(простите за мой английский кстати ^^)

1 Ответ

0 голосов
/ 13 февраля 2019

Drupal 7 и Slim 3:

Используйте 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.

I'mАвтор этого модуля:

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

Дополнительную документацию по API формы D7 можно найти здесь:

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

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

...