Je suis développeur et mainteneur du projet CiviCRM. Nous avons essayé de créer une version Drupal 8 CiviCRM, et nous avons parcouru un long chemin. Nous nous battons la tête contre nos claviers collectifs en essayant de trouver un bloqueur majeur pour le projet.
CiviCRM utilise Symfony depuis un certain temps, et la version incluse est différente de celle fournie avec Drupal.
Nous pouvons installer CiviCRM avec Drupal 8, mais après l'avoir installé, nous ne pouvons installer aucun autre module Drupal.
Je crois que cela se résume à une situation où la version CiviCRM de Symfony se charge d'une manière ou d'une autre avant la version Drupal, et cela pose des problèmes.
Quelqu'un connaît-il un module Drupal 8 qui inclut une version différente de Symfony que celle livrée avec Drupal?
Récemment, j'ai rencontré le projet Ludwig. Ce module permet l'enregistrement des espaces de noms dans une classe qui s'étendServiceProviderBase
.
Serait-il possible pour la version Drupal 8 du module CiviCRM d'inclure un fichier CivicrmServiceProvider.php, qui définit une CivicrmServiceProvider
classe et unregister()
méthode qui ajoute un espace de noms de conteneur pour permettre à cela de fonctionner?
De nombreux fichiers CiviCRM ont des use
instructions comme Drupal commençant par Symfony, comme ici .
Nous avons en fait mis CiviCRM Core dans le dossier Drupal doc_root / bibliothèques, et utilisons le module de bibliothèques.
Ceci est le repo pour la version 8.x du module CiviCRM Drupal , si quelqu'un veut regarder ce que nous avons obtenu jusqu'à présent. Si quelqu'un a l'élixir magique pour cela, je peux vous dire qu'il y aurait beaucoup de gens heureux dans notre communauté. Donc, si vous savez comment nous aider, n'hésitez pas.
CiviCRM s'installe et les pages CiviCRM fonctionnent. Ce qui ne fonctionne pas, c'est qu'après l'installation de CiviCRM, nous ne pouvons pas installer d'autres modules via la page admin / modules. Pour autant que je sache, c'est la seule chose qui est cassée. L'installation de modules avec Drush, après l'installation de CiviCRM, fonctionne également.
Essayer d'installer un autre module après l'installation de CiviCRM provoque l'erreur suivante:
Erreur fatale PHP: appel à la méthode non définie Symfony \ Component \ DependencyInjection \ Definition :: setFactory () dans /var/www/html/civi-for-d8/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php sur la ligne 206
C'est dans Drupal 8.3.5. Essayer d'installer CiviCRM pour Drupal 8 dans une instance propre de Drupal 8.4-dev provoque l'erreur suivante:
Drupal \ Component \ Serialization \ Exception \ InvalidDataTypeException: l'indicateur réservé "@" ne peut pas démarrer un scalaire simple; vous devez citer le scalaire à la ligne 8 (près de "arguments: [@string_translation, @ civicrm.page_state]"). dans Drupal \ Component \ Serialization \ YamlSymfony :: decode () (ligne 40 de /var/www/html/drupal84/core/lib/Drupal/Component/Serialization/YamlSymfony.php).