Доброе утро, У меня есть вопрос об использовании 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?
Хорошего дня !
(Извините за мой английский, кстати ^^)
Я никогда не использую Drupal, но если вы используете Apache и .htaccess, я считаю, что вы можете создать шаблон RewriteRule для соответствия MYNEWFOLDER и указать, какой фактический index.php использовать. Однако для меня это настроить slim как другое приложение или, если вы не можете, может быть в его собственном отдельном субдомене.
Страница 404 - это страница, на которой Drupal не может найти маршрут, я имею в виду, что весь стиль страницы соответствует стилю Drupal, поэтому я уверен, что Drupal блокирует активность Slim.
Я уже пытался переписать правило в .htaccess, но у меня это не сработало ^^.
@ J.Johny Где это работает? Я думаю, вы могли бы добавить какое-то правило в htaccess Drupal, чтобы игнорировать все URL-адреса, идущие в подкаталог вашего тонкого приложения, а затем иметь отдельный собственный htaccess для slim. Вы пробовали это?






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://www.drupal.org/project/simple_slim_api
Дополнительная документация для D7 Form API находится здесь:
https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x
Вы тестировали свой тонкий экземпляр с помощью itelf, чтобы убедиться, что он работает на 100%, прежде чем помещать его в drupal? например Этот 404 на самом деле не говорит, является ли проблема тонким или drupal