如何在Drupal中使用Slim micro框架?

问题描述 投票:2回答:1

早安,我有一个关于在Drupal中使用Slim的问题:我在我的apache服务器中有一个用Drupal创建的现有网站项目。我的工作是在现有网站上添加另一部分,我决定在没有Drupal但使用Slim微框架(v2)的情况下工作。完成我的网站后,我在Drupal项目文件夹的根目录中创建了一个文件夹,我将我的网站放在这个文件夹中。

This is how the Drupal folder looks with the new folder。 (文件夹可能是脚本,misc,...和文件可能是.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“找不到。”

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

我的问题是:如何告诉Drupal这个文件夹MYNEWFOLDER必须被忽略?如何在不被Drupal重定向的情况下访问http://www.thewebsite.com/MYNEWFOLDER/admin

祝你今天愉快 !

(抱歉我的英文顺便说一句^^)

php apache routes drupal-7 slim
1个回答
0
投票

Drupal 7和Slim 3:

使用Form API使用load参数创建路由:您需要将Drupal的http请求对象路由到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 /之后传递给用户的任何内容,独立于Drupal主题层并限制在Drupal中的特定路径,而不会破坏您的Web服务器。

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

© www.soinside.com 2019 - 2024. All rights reserved.