Soy desarrollador y mantenedor del proyecto CiviCRM. Hemos estado tratando de hacer una versión de Drupal 8 CiviCRM, y hemos recorrido un largo camino. Estamos golpeando nuestras cabezas contra nuestros teclados colectivos tratando de encontrar un bloqueador importante para el proyecto.
CiviCRM ha usado Symfony por un tiempo, y la versión que se incluye es diferente a la que se incluye con Drupal.
Podemos instalar CiviCRM con Drupal 8, pero después de instalarlo, no podemos instalar ningún otro módulo de Drupal.
Creo que se reduce a una situación en la que de alguna manera la versión CiviCRM de Symfony se carga antes que la versión Drupal, y esto causa problemas.
¿Alguien sabe de un módulo Drupal 8 que incluya una versión diferente de Symfony que la que se entrega con Drupal?
Recientemente me encontré con el proyecto Ludwig. Este módulo permite el registro de espacios de nombres en una clase que se extiendeServiceProviderBase
.
¿Sería posible que la versión Drupal 8 del módulo CiviCRM incluya un archivo CivicrmServiceProvider.php, que define una CivicrmServiceProvider
clase y un register()
método que agrega un espacio de nombres de contenedor para permitir que esto funcione?
Muchos archivos CiviCRM tienen use
declaraciones como Drupal que comienzan con Symfony, como aquí .
De hecho, colocamos CiviCRM Core en la carpeta Drupal doc_root / collections, y usamos el módulo de bibliotecas.
Este es el repositorio para la versión 8.x del módulo CiviCRM Drupal , si alguien quiere ver lo que tenemos hasta ahora. Si alguien tiene el elixir mágico para esto, puedo decirte que habría mucha gente feliz en nuestra comunidad. Entonces, si sabe cómo ayudarnos, hágalo.
CiviCRM se instala y las páginas de CiviCRM funcionan. Lo que no funciona es que después de instalar CiviCRM, no podemos instalar otros módulos a través de la página admin / modules. Que yo sepa, eso es lo único que está roto. También instalar módulos con Drush, después de instalar CiviCRM, funciona.
Intentar instalar otro módulo después de instalar CiviCRM provoca el siguiente error:
Error fatal de PHP: Llame al método indefinido Symfony \ Component \ DependencyInjection \ Definition :: setFactory () en /var/www/html/civi-for-d8/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php en la línea 206
Eso está en Drupal 8.3.5. Intentar instalar CiviCRM para Drupal 8 en una instancia limpia de Drupal 8.4-dev causa el siguiente error:
Drupal \ Component \ Serialization \ Exception \ InvalidDataTypeException: el indicador reservado "@" no puede iniciar un escalar simple; debe citar el escalar en la línea 8 (cerca de "argumentos: [@string_translation, @ civicrm.page_state]"). en Drupal \ Component \ Serialization \ YamlSymfony :: decode () (línea 40 de /var/www/html/drupal84/core/lib/Drupal/Component/Serialization/YamlSymfony.php).