Загрузка зависимостей из каталога поставщика в модуле с использованием композитора

Я использую композитор для управления зависимостями в моем модуле drupal. Я определил свою зависимость в файле composer.json, размещенном в корневом каталоге моего модуля. После запуска кода composer install он правильно устанавливает все зависимости; однако автозагрузка не работает.

Я проверил несколько потоков здесь, которые касаются проблемы, и обнаружил, что большинство из них предлагает использовать модуль композитор-менеджер , который доступен, хотя на странице модуля на drupal.org говорится, что он устарел благодаря улучшенному использованию композитора Drupal с версии 8.1

Вот мой файл composer.json в корневом каталоге моего модуля:

{
"name": "activit/facebook_ratings",
"description": "Display a feed of your Facebook fanpage's ratings on your website.",
"type": "drupal-module",
"require": {
    "facebook/graph-sdk": "^5.4"
},
"license": "MIT",
"authors": [
    {
        "name": "Robert Balasko",
        "email": "[email protected]"
    }
]
}

и фабричный класс в корне каталога src , который пытается загрузить класс из графика-sdk.

<?php namespace Drupal\facebook_ratings;


use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Facebook\Facebook;

class FacebookConnectorFactory {

  private $logger_factory;

  public function __construct(LoggerChannelFactoryInterface $logger_factory) {
    $this->logger_factory = $logger_factory;
  }

  public function getFacebookService($app_id, $app_secret) {
    if (!$app_id || !$app_secret) {
      $this->logger_factory
        ->get('facebook_ratings')
        ->error('Undefined App ID or App secret');

      return FALSE;
    }

    return new Facebook([
      'app_id' => $app_id,
      'app_secret' => $app_secret,
      'default_graph_version' => 'v2.6',
    ]);
  }

}

Результатом является ошибка class not found при запуске моего кода. Не следует ли автозагрузка зависимостей или я делаю что-то неправильно?

Большое спасибо.

7 голосов | спросил crzpiot 15 +03002016-10-15T10:03:56+03:00312016bEurope/MoscowSat, 15 Oct 2016 10:03:56 +0300 2016, 10:03:56

1 ответ


8

Composer Manager - это всего лишь небольшая обертка вокруг плагина Merge, который у нас есть в настоящее время.

Зарегистрируйте свой модуль в корневом каталоге composer.json вашего проекта, ищите дополнительные> merge-plugin> включают. Он должен выглядеть следующим образом:

"extra": {
    "_readme": [
        "By default Drupal loads the autoloader from ./vendor/autoload.php.",
        "To change the autoloader you can edit ./autoload.php."
    ],
    "merge-plugin": {
        "include": [
            "core/composer.json",
            "modules/facebook_ratings/composer.json"
        ],
        "recurse": false,
        "replace": false,
        "merge-extra": false
    }
}

modules/facebook_ratings/composer.json - это путь к вашему composer.json. Это зависит от того, где у вас есть ваш модуль.

Запустите composer install.

ответил webflo 15 +03002016-10-15T13:12:11+03:00312016bEurope/MoscowSat, 15 Oct 2016 13:12:11 +0300 2016, 13:12:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132