Я разработчик и сопровождающий проекта CiviCRM. Мы пытались создать версию CiviCRM для Drupal 8 и прошли долгий путь. Мы бьем себя по голове о наших коллективных клавиатурах, пытаясь стать главным блокировщиком для проекта.
CiviCRM какое-то время использовал Symfony, и включенная версия отличается от той, которая поставляется с Drupal.
Мы можем установить CiviCRM с Drupal 8, но после его установки мы не сможем установить любой другой модуль Drupal.
Я полагаю, что это сводится к ситуации, когда версия Symfony на CiviCRM загружается раньше, чем версия Drupal, и это вызывает проблемы.
Кто-нибудь знает модуль Drupal 8, который включает в себя версию Symfony, отличную от той, которая поставляется с Drupal?
Недавно я наткнулся на проект Людвига. Этот модуль позволяет регистрировать пространства имен в расширяемом классеServiceProviderBase
.
Возможно ли, чтобы версия Drupal 8 модуля CiviCRM включала файл CivicrmServiceProvider.php, который определяет CivicrmServiceProvider
класс, и register()
метод, который добавляет пространство имен контейнера, чтобы это работало?
Многие файлы CiviCRM имеют use
такие выражения, как Drupal, начиная с Symfony, как здесь .
Фактически мы помещаем CiviCRM Core в папку Drupal doc_root / library и используем модуль библиотеки.
Это репозиторий для версии 8.x модуля CiviCRM Drupal , если кто-то хочет взглянуть на то, что мы получили до сих пор. Если у кого-то есть для этого волшебный эликсир, я могу сказать, что в нашем сообществе будет много счастливых людей. Так что, если вы знаете, как помочь нам, пожалуйста.
CiviCRM устанавливает, и страницы CiviCRM работают. Что не работает, так это то, что после установки CiviCRM мы не можем устанавливать другие модули через страницу admin / modules. Насколько я знаю, это единственное, что сломано. Также установка модулей с Drush, после установки CiviCRM, работает.
Попытка установить другой модуль после установки CiviCRM приводит к следующей ошибке:
Неустранимая ошибка PHP: вызов неопределенного метода Symfony \ Component \ DependencyInjection \ Definition :: setFactory () в /var/www/html/civi-for-d8/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php в строке 206
Это в Drupal 8.3.5. Попытка установить CiviCRM для Drupal 8 в чистый экземпляр Drupal 8.4-dev приводит к следующей ошибке:
Drupal \ Component \ Serialization \ Exception \ InvalidDataTypeException: зарезервированный индикатор "@" не может запустить простой скаляр; вам нужно заключить скаляр в строку 8 (рядом с «arguments: [@string_translation, @ civicrm.page_state]»). в Drupal \ Component \ Serialization \ YamlSymfony :: decode () (строка 40 из /var/www/html/drupal84/core/lib/Drupal/Component/Serialization/YamlSymfony.php).