Sou desenvolvedor e mantenedor do projeto CiviCRM. Estamos tentando criar uma versão do Drupal 8 CiviCRM e percorremos um longo caminho. Estamos batendo nossas cabeças contra nossos teclados coletivos, tentando descobrir um grande bloqueador para o projeto.
O CiviCRM usa o Symfony há algum tempo, e a versão incluída é diferente da que acompanha o Drupal.
Podemos instalar o CiviCRM com o Drupal 8, mas após a instalação, não podemos instalar nenhum outro módulo do Drupal.
Eu acredito que tudo se resume a uma situação em que, de alguma forma, a versão CiviCRM do Symfony carrega antes da versão Drupal, e isso causa problemas.
Alguém conhece um módulo do Drupal 8 que inclui uma versão diferente do Symfony do que a que acompanha o Drupal?
Recentemente, deparei-me com o projeto Ludwig. Este módulo permite o registro de espaços para nome em uma classe que se estendeServiceProviderBase
.
Seria possível para a versão Drupal 8 do módulo CiviCRM incluir um arquivo CivicrmServiceProvider.php, que define uma CivicrmServiceProvider
classe e um register()
método que adiciona um espaço para nome do contêiner para permitir que isso funcionasse?
Muitos arquivos do CiviCRM têm use
instruções como Drupal começando com Symfony, como aqui .
Na verdade, colocamos o CiviCRM Core na pasta doc_root / libraries do Drupal e usamos o módulo de bibliotecas.
Este é o repositório para o módulo 8.x do CiviCRM Drupal , se alguém quiser ver o que conseguimos até agora. Se alguém tiver o elixir mágico para isso, posso dizer que haveria muitas pessoas felizes em nossa comunidade. Então, se você sabe como nos ajudar, por favor.
O CiviCRM é instalado e as páginas do CiviCRM funcionam. O que não funciona é que, após a instalação do CiviCRM, não podemos instalar outros módulos na página admin / modules. Tanto quanto sei, é a única coisa que está quebrada. A instalação de módulos com o Drush, após a instalação do CiviCRM, funciona.
Tentar instalar outro módulo após a instalação do CiviCRM causa o seguinte erro:
Erro fatal do PHP: Ligue para o método indefinido Symfony \ Component \ DependencyInjection \ Definition :: setFactory () em /var/www/html/civi-for-d8/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php na linha 206
Isso está no Drupal 8.3.5. Tentar instalar o CiviCRM for Drupal 8 em uma instância limpa do Drupal 8.4-dev causa o seguinte erro:
Drupal \ Component \ Serialization \ Exception \ InvalidDataTypeException: o indicador reservado "@" não pode iniciar um escalar simples; é necessário citar o escalar na linha 8 (próximo a "argumentos: [@string_translation, @ civicrm.page_state]"). em Drupal \ Component \ Serialization \ YamlSymfony :: decode () (linha 40 de /var/www/html/drupal84/core/lib/Drupal/Component/Serialization/YamlSymfony.php).