【问题标题】:How can I use Slim micro framework inside Drupal?如何在 Drupal 中使用 Slim 微框架?
【发布时间】:2018-05-24 08:02:41
【问题描述】:

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

This is how the Drupal folder looks with the new folder。 (文件夹可能是脚本、杂项……而文件可能是 .htaccess、index.php、……)

之后,我尝试使用此 URL 访问我的网站:http://www.thewebsite.com/MYNEWFOLDER/ 并将我重定向到我在 route.php 文件中添加的路由“/”:一切正常。

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

然后我尝试http://www.thewebsite.com/MYNEWFOLDER/admin,因为我还在我的 route.php 文件中添加了一个路由“/admin”,但它没有访问网站的这一部分,而是将我重定向到一个 drupal 错误 404 页面,该页面说:'未找到“MYNEWFOLDER/admin”。'。

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

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

祝你有美好的一天!

(对不起我的英语顺便说一句^^)

【问题讨论】:

  • 在将其放入 drupal 之前,您是否通过 itelf 测试了您的 slim 实例以确保其 100% 工作?例如那个 404 并没有真正说明它是苗条还是 drupal 是个问题
  • 我从不使用 Drupal,但如果您使用 Apache 和 .htaccess,我相信您可以创建 RewriteRule 模式来匹配 MYNEWFOLDER 并告诉实际使用的 index.php。然而,对我来说,是将 slim 设置为不同的应用程序,或者如果你不能,可能在它自己单独的子域下。
  • 404 页面是 Drupal 找不到路由的页面,我的意思是页面的所有样式都是 Drupal 的样式,所以我确定 Drupal 正在阻止 Slim 活动。
  • 我已经尝试在 .htaccess 中重写规则,但它对我不起作用^^。
  • @J.Johny 你在哪里可以得到这个工作?我认为您可以在 Drupal 的 htaccess 中添加一些规则来忽略所有转到您的 slim 应用程序子目录的 url,然后为 slim 设置一个单独的 htaccess。你试过吗?

标签: php apache routes drupal-7 slim


【解决方案1】:

Drupal 7 和 Slim 3:

使用 Form API 使用负载参数创建路由: 您需要将 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 中的特定路径,而不会破坏您的网络服务器。

https://github.com/slimphp.

我是这个模块的作者:

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

在此处找到 D7 表单 API 的其他文档:

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

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

【讨论】:

    猜你喜欢
    • 2019-04-09
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多