我是CiviCRM项目的开发人员和维护人员。我们一直在尝试制作Drupal 8版本的CiviCRM,并且还有很长的路要走。我们正在为我们的集体键盘而战,试图找出该项目的主要障碍。
CiviCRM使用Symfony已有一段时间了,所包含的版本与Drupal附带的版本有所不同。
我们可以在Drupal 8上安装CiviCRM,但是在安装之后,我们将无法安装其他任何Drupal模块。
我认为这归结为某种情况,即Symfony的CiviCRM版本先于Drupal版本加载,这会引起问题。
有谁知道Drupal 8模块所包含的Symfony版本与Drupal随附的模块版本不同?
最近,我遇到了路德维希项目。该模块允许在扩展类中ServiceProviderBase
注册名称空间。
Drupal 8版本的CiviCRM模块是否可能包括定义一个CivicrmServiceProvider
类的CivicrmServiceProvider.php文件和一个register()
添加容器名称空间以使其工作的方法?
许多CiviCRM文件都use
包含以Symfony开头的Drupal之类的语句,例如here。
实际上,我们将CiviCRM Core放入Drupal doc_root / libraries文件夹中,并使用库模块。
如果有人想看看我们到目前为止所得到的,这是CiviCRM Drupal模块8.x版本的存储库。如果有人为此拥有万灵药,我可以告诉您,我们社区中会有很多快乐的人。因此,如果您知道如何帮助我们,请这样做。
CiviCRM确实会安装,并且CiviCRM页面也能正常工作。无法正常工作的是,在安装CiviCRM之后,我们无法通过admin / modules页面安装其他模块。据我所知,这是唯一被破坏的东西。在安装CiviCRM之后,也可以使用Drush安装模块。
在安装CiviCRM之后尝试安装另一个模块会导致以下错误:
PHP致命错误:在第206行上的/var/www/html/civi-for-d8/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php中调用未定义的方法Symfony \ Component \ DependencyInjection \ Definition :: setFactory()
那是在Drupal 8.3.5中。尝试将用于Drupal 8的CiviCRM安装到干净的Drupal 8.4-dev实例中会导致以下错误:
Drupal \ Component \ Serialization \ Exception \ InvalidDataTypeException:保留指示符“ @”无法启动普通标量;您需要在第8行引用标量(在“参数:[@ string_translation,@ civicrm.page_state]”附近)。在Drupal \ Component \ Serialization \ YamlSymfony :: decode()中(/var/www/html/drupal84/core/lib/Drupal/Component/Serialization/YamlSymfony.php中的第40行)。