Jestem programistą i opiekunem projektu CiviCRM. Próbowaliśmy stworzyć CiviCRM w wersji Drupal 8 i przeszliśmy długą drogę. Uderzamy głowami w klawisze kolektywne, próbując znaleźć główny bloker dla tego projektu.
CiviCRM od jakiegoś czasu używa Symfony, a dołączona wersja jest inna niż ta, która jest dostarczana z Drupalem.
Możemy zainstalować CiviCRM z Drupal 8, ale po jego zainstalowaniu nie możemy zainstalować żadnego innego modułu Drupal.
Wierzę, że sprowadza się to do sytuacji, w której wersja Symfony CiviCRM ładuje się przed wersją Drupala, co powoduje problemy.
Czy ktoś wie o module Drupal 8, który zawiera inną wersję Symfony niż ten dostarczany z Drupalem?
Ostatnio natknąłem się na projekt Ludwig. Ten moduł umożliwia rejestrację przestrzeni nazw w rozszerzonej klasieServiceProviderBase
.
Czy byłoby możliwe, aby wersja CiviCRM w wersji Drupal 8 zawierała plik CivicrmServiceProvider.php, który definiuje CivicrmServiceProvider
klasę, oraz register()
metodę, która dodaje przestrzeń nazw kontenera, aby to działało?
Wiele plików CiviCRM ma use
takie instrukcje, jak Drupal zaczynające się od Symfony, jak tutaj .
W rzeczywistości umieszczamy CiviCRM Core w folderze Drupal doc_root / libraries i używamy modułu bibliotek.
To jest repozytorium dla wersji CiviCRM Drupal w wersji 8.x. , jeśli ktoś chce spojrzeć na to, co do tej pory mamy. Jeśli ktoś ma do tego magiczny eliksir, mogę powiedzieć, że w naszej społeczności byłoby wielu szczęśliwych ludzi. Jeśli więc wiesz, jak nam pomóc, zrób to.
CiviCRM się instaluje, a strony CiviCRM działają. Nie działa to, że po zainstalowaniu CiviCRM nie możemy instalować innych modułów za pośrednictwem strony admin / moduły. O ile wiem, to jedyna zepsuta rzecz. Działa także instalacja modułów z Drush, po zainstalowaniu CiviCRM.
Próba zainstalowania innego modułu po zainstalowaniu CiviCRM powoduje następujący błąd:
Błąd krytyczny PHP: Wywołanie niezdefiniowanej metody Symfony \ Component \ DependencyInjection \ Definition :: setFactory () w /var/www/html/civi-for-d8/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php w linii 206
To jest w Drupal 8.3.5. Próba zainstalowania CiviCRM dla Drupala 8 w czystej instancji Drupala 8.4-dev powoduje następujący błąd:
Drupal \ Component \ Serialization \ Exception \ InvalidDataTypeException: Zarezerwowany wskaźnik „@” nie może uruchomić zwykłego skalara; musisz zacytować skalar w linii 8 (w pobliżu „argumentów: [@string_translation, @ civicrm.page_state]”). w Drupal \ Component \ Serialization \ YamlSymfony :: decode () (wiersz 40 /var/www/html/drupal84/core/lib/Drupal/Component/Serialization/YamlSymfony.php).