如何在 drupal 7 的模块中包含自动加载



我想在drupal的自定义模块中使用php客户端的aws-sdk。我需要在模块中包含vendor/autoload.php。但是当我包含它时,它给了我错误。我试图包括很多方法,但没有成功。我将其添加为:

require __DIR__.'/vendor/autoload.php';.module文件的文件顶部。然后网站崩溃了。请您告诉我应该如何使用require __DIR__.'/vendor/autoload.php';

我不确定drupal如何处理外部php模块的自动加载。但是,凭借使用laravel,cakephp和composer等框架的经验,我确信索引的目标文件.php它路由到根目录中的多个不同控制器已经包括vendor/autoload.php。如果它不包括,请添加 require 语句,该语句指向自动加载.php相对于索引.php或绝对路径。 然后在 php 中使用namespaces,您可以使用外部 php 模块,然后自动加载。

require __DIR__.'/vendor/autoload.php'; // Incase vendor directory is in same level as index.php file
require dirname(__DIR__).'/vendor/autoload.php'; // Incase vendor directory is in parent level as index.php file

如果没有实际的错误消息,很难知道。如果你看到一个白屏,你需要启用完整错误的显示(admin/config/development/logging),这样你可以看到实际发生了什么,以及你依赖的类是否没有被包括在内,或者有某种冲突(还记得在更改任何重要内容后清除缓存)。

以下是我在自定义 D7 模块中添加第三方软件包的方式:

  • 生成一个 composer.json 文件,该文件以vendor/进行安装
  • 需要[modulename].modulevendor/autoload.php

详细地:

  • 更改为模块目录

  • 运行composer init

  • 按照提示操作(它会询问"是否要以交互方式定义依赖项" - 选择"是",然后可以按名称搜索)

  • 使用drupal-module作为类型

  • 如果您不希望其他人使用您的代码,您可以使用"专有"作为许可证,Composer.json 会干净地验证 (composer validate)

  • 完成后,您应该有一个供应商目录,其中包含一个autoload.php文件和/composer目录。 从您的.module文件中"要求"它,例如:

require 'vendor/autoload.php';

  • drush cc all

您现在应该能够使用您的代码。


请注意,有一个名为 xautoload 的 Drupal 模块 - (在我看来)对此矫枉过正。

我想知道[modulename].infoautoload.php的简单files[] =行是否有效 - 无论顺序如何,它都不起作用。

相关内容

  • 没有找到相关文章

最新更新