Рейтинг:0

Почему не найден Endroid\QrCode\QrCode?

флаг cn
ArK

Я создал собственный модуль и установил андроид/qrcode библиотека в моем модуле с помощью Composer. Когда я пытаюсь использовать эту библиотеку, я получаю следующую ошибку.

Ошибка: класс Endroid\QrCode\QrCode не найден в Drupal\shopexp\Plugin\Block\ShopExp->build() (строка 25 модуля\custom\shopexp\src\Plugin\Block\ShopExp.php).

Код, использующий библиотеку, следующий.

пространство имен Drupal\shopexp\Plugin\Block;
используйте Drupal\Core\Block\BlockBase;
используйте Endroid\QrCode\QrCode;

класс ShopExp расширяет BlockBase {    
  публичная функция createpr() {
      $qr = QrCode::create("https://site.com");
  }  
  общедоступная функция сборки () {
    $qr = новый QrCode();
    возвращаться [
      '#markup' => 'тестовое сообщение',
    ];
  }
}

композитор.json файл, используемый модулем, следующий.

{
    "требовать": {
        "эндроид/qr-код": "^2.5"
    }
}

Структура папок следующая.

Скриншот

флаг fr
Почему бы не использовать для этого существующий модуль, а не писать свой собственный код? И если он не делает именно то, что вы хотите, возможно, помогите с этим модулем. https://www.drupal.org/project/endroid_qr_code
ArK avatar
флаг cn
ArK
@anonymous На самом деле я пытался уменьшить количество модулей и пытался включить другие функции в один модуль.
флаг fr
Это ошибочная логика. Что не так с большим количеством модулей? Это по-прежнему одно и то же количество строк кода, независимо от того, где вы их разместили. В любом случае, ИМО, у вас неправильный подход. Сотрудничайте и улучшайте существующий код для всех, а не просто решайте свои проблемы.
ArK avatar
флаг cn
ArK
@anonymous, я понимаю твою точку зрения. Но проблема в том, что я ошибся, используя библиотеку php для использования внутри блока после ее включения через композитор.
Рейтинг:1
флаг fr

Ты должен для композитора требуется endoid/qrcode из корневого каталога Drupal, а не из каталога вашего пользовательского модуля. Пакет необходимо установить в основной каталог поставщика вместе со всеми другими пакетами, используемыми Drupal, иначе загрузчик классов не сможет его найти.

ArK avatar
флаг cn
ArK
если включить в корневой композитор, json означает, что произойдет, если я использую тот же модуль в другой системе. Будет ли установка этого модуля в другом экземпляре drupal включать зависимости?
флаг cn
Нет — если вы хотите, чтобы Composer автоматически устанавливал зависимости для вашего модуля, ваш модуль должен быть установлен Composer. Если вы не используете что-то вроде плагина слияния композитора, который может быть вариантом, но это также потребует изменений в composer.json каждого сайта.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.