วิธีการติดตั้งโมดูลที่มี Symfony เวอร์ชั่นอื่นแตกต่างกันอย่างไร


17

ฉันเป็นนักพัฒนาและผู้ดูแลโครงการ CiviCRM เราได้พยายามสร้าง CiviCRM รุ่น Drupal 8 และมาไกล เรากำลังตีหัวของเรากับแป้นพิมพ์ส่วนรวมของเราที่พยายามคิดบล็อกตัวสำคัญสำหรับโครงการ

CiviCRM ใช้ Symfony มาระยะหนึ่งแล้วและเวอร์ชั่นที่รวมไว้นั้นแตกต่างจากรุ่นที่มี Drupal

เราสามารถติดตั้ง CiviCRM ด้วย Drupal 8 ได้ แต่หลังจากที่คุณติดตั้งแล้วเราไม่สามารถติดตั้งโมดูล Drupal อื่น ๆ ได้

ฉันเชื่อว่ามันทำให้สถานการณ์เลวร้ายลงซึ่ง Symfony เวอร์ชั่น CiviCRM โหลดขึ้นก่อนรุ่น Drupal และทำให้เกิดปัญหา

ไม่มีใครรู้เกี่ยวกับโมดูล Drupal 8 ที่มี Symfony เวอร์ชันที่แตกต่างจากโมดูลที่มาพร้อมกับ Drupal

เมื่อเร็ว ๆ นี้ฉันวิ่งข้ามโครงการลุดวิก โมดูลนี้จะช่วยให้การลงทะเบียนของ namespaces ในชั้นเรียนที่ขยายServiceProviderBase

เป็นไปได้ไหมที่โมดูล CiviCRM เวอร์ชัน Drupal 8 จะรวมไฟล์ CivicrmServiceProvider.php ซึ่งกำหนดCivicrmServiceProviderคลาสและregister()วิธีการที่เพิ่มเนมสเปซคอนเทนเนอร์เพื่อให้สิ่งนี้ทำงานได้หรือไม่

ไฟล์ CiviCRM หลายคนมีuseงบเช่น Drupal เริ่มต้นด้วย Symfony ชอบที่นี่

จริงๆแล้วเราใส่ CiviCRM Core ลงในโฟลเดอร์ Drupal doc_root / ไลบรารีและใช้โมดูลไลบรารี

นี่คือ repo สำหรับโมดูล CiviCRM Drupal เวอร์ชั่น 8.xถ้าใครบางคนต้องการดูสิ่งที่เราได้รับจนถึงตอนนี้ หากใครบางคนมีน้ำอมฤตวิเศษสำหรับเรื่องนี้ฉันสามารถบอกคุณได้ว่าจะมีคนที่มีความสุขมากมายในชุมชนของเรา ดังนั้นถ้าคุณรู้วิธีช่วยเราโปรดทำ

CiviCRM ทำการติดตั้งและหน้า CiviCRM ทำงานได้ สิ่งที่ใช้ไม่ได้คือหลังจากติดตั้ง CiviCRM เราไม่สามารถติดตั้งโมดูลอื่น ๆ ผ่านหน้าผู้ดูแลระบบ / โมดูล เท่าที่ฉันรู้ว่าเป็นสิ่งเดียวที่ถูกทำลาย การติดตั้งโมดูลด้วย Drush หลังจากติดตั้ง CiviCRM ก็ใช้งานได้เช่นกัน

การพยายามติดตั้งโมดูลอื่นหลังจากติดตั้ง CiviCRM ทำให้เกิดข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาดร้ายแรงของ PHP: การเรียกไปยังวิธีที่ไม่ได้กำหนด Symfony \ Component \ DependencyInjection \ Definition :: setFactory () ใน /var/www/html/civi-for-d8/core/lib/Drupal/Core/DependencyInject/YamlFileLoader.php ที่บรรทัด 206

ที่อยู่ใน Drupal 8.3.5 การพยายามติดตั้ง CiviCRM สำหรับ Drupal 8 เข้าสู่อินสแตนซ์ Clean Drupal 8.4-dev ทำให้เกิดข้อผิดพลาดต่อไปนี้:

Drupal \ Component \ Serialization \ Exception \ InvalidDataTypeException: ตัวบ่งชี้ที่สงวน "@" ไม่สามารถเริ่มสเกลาร์ธรรมดาได้ คุณต้องเสนอราคาสเกลาร์ที่บรรทัด 8 (ใกล้กับ "อาร์กิวเมนต์: [@string_translation, @ civicrm.page_state]") ใน Drupal \ Component \ Serialization \ YamlSymfony :: decode () (บรรทัดที่ 40 ของ /var/www/html/drupal84/core/lib/Drupal/Component/Serialization/YamlSymfony.php)


บนมือถือแล้ว Symfony รุ่นใด 8.4 จะใช้ 3.x กระโดดจาก v2
Matt Glaman

เราอยู่ในรุ่น 2.5.0 ใน CiviCRM
jackrabbithanna

เอกสารบางส่วนของปัญหา: problems.civicrm.org/jira/browse/CRM-17652 .... มีคนหนึ่งรายงานว่าเขาไม่เห็นปัญหา แต่ฉันไม่แน่ใจเกี่ยวกับสิ่งนั้นทุกคนที่พยายามได้รับข้อผิดพลาด ชอบรายงานที่นั่น
jackrabbithanna

4
ฉันไม่คิดว่ามันเป็นไปได้ Drupal 8.4 ได้เปลี่ยนมาใช้ Symfony3 แล้วแม้ว่าจะมีการพูดคุยกันที่เกี่ยวข้องกับ drush ซึ่งมีปัญหาเหมือนกัน เป็นไปไม่ได้ที่จะโหลดสองรุ่น symfony ที่แตกต่างกันไม่ว่าคุณจะหยุดการรวมหรือทำลาย Drupal บางที symfony3 จะยังไม่อยู่ใน 8.4 แต่การสนับสนุนความปลอดภัยสำหรับ symfony2 จะสิ้นสุดก่อนที่การสนับสนุนด้านความปลอดภัยของ Drupal8 ดังนั้นในบางจุดเราจะต้องเปลี่ยน
Berdir

1
@Berdir ที่อาจให้คำตอบที่ดี?
ไคลฟ์

คำตอบ:


8

ดังนั้นฉันคิดว่าถ้า CiviCRM ได้รับการติดตั้งลงใน Drupal 8 ผ่านผู้แต่ง (เช่นcomposer require civicrm/civicrm-coreในรูทของ Drupal) และการใช้ Symfony ของ CiviCRM นั้นเข้ากันได้กับ Symfony 2.8 หรือ 3.x (เช่นไม่ใช้ฟังก์ชันที่เลิกใช้)

สิ่งนี้จะได้รับทุกสิ่งที่ติดตั้งในไดเรกทอรีผู้ขายของ Drupal แทนที่จะเป็นสองและนั่นหมายความว่า CiviCRM จะใช้ Symfony ใน Drupal 8 แต่ถ้า CiviCRM เข้ากันได้กับ Symfony รุ่นใหม่กว่า (แม้ว่าจะรวมรุ่นเก่ากว่าสำหรับ Drupal 6 และ 7 และ CMS อื่น ๆ ) ควรจะใช้ได้

ฉันคิด?

ปรับปรุง:ใช่มันใช้งานได้ - ฉันลองแล้ว :-) ตอนแรกฉันโพสต์ด้านล่างในคิวปัญหา CiviCRM ( CRM-17652 ) แต่โพสต์ใหม่ที่นี่เพื่อความสมบูรณ์

ความคิดใหญ่:

เนื่องจากนักแต่งเพลงค่อนข้างใหม่สำหรับผู้คนจำนวนมากฉันจะพยายามทำทีละขั้นตอนจากนักแต่งเพลงระดับสูงบางอย่างจนถึงวิธีที่ทำได้ใน CiviCRM:

  • นักแต่งเพลงอนุญาตให้แอปพลิเคชันต้องการไลบรารีที่ต้องการ (และแน่นอนว่าสามารถใช้ไลบรารีอื่น ๆ ได้)
  • ไลบรารีมีไฟล์ composer.json ซึ่งระบุว่าต้องการไลบรารีอื่น ๆ และเวอร์ชันใดที่เข้ากันได้กับมัน (แต่ไม่จำเป็นต้องเป็นรุ่นเดียวโดยเฉพาะ - มักจะเป็นช่วงของเวอร์ชันเช่น^2.4.3ที่บอกว่าอย่างน้อย 2.4.3 และสูงกว่า (แต่ไม่ใช่ รวมถึง) 3.0.0)
  • แอพพลิเคชั่นนี้มี composer.json ซึ่งอธิบายถึงไลบรารีที่ต้องการและความเข้ากันได้กับช่วงของเวอร์ชันที่คล้ายกัน แอปพลิเคชันจะมีผู้แต่งซึ่งเป็นชุดเฉพาะของแต่ละเวอร์ชัน
  • ไลบรารี่ยังสามารถมี composer.lock สำหรับการทดสอบหรือการแจกจ่ายของตัวเอง (เช่นการสร้าง tarball ที่วางจำหน่ายพร้อมกับการพึ่งพา) แต่สิ่งนี้จะถูกละเว้นเมื่อแอปพลิเคชันต้องการไลบรารีที่กำหนด (ดูhttps://getcomposer.org/doc/02) -l ไลบรารี.md # lock-file )
  • เมื่อแอปพลิเคชันต้องการใช้ไลบรารีใหม่ผู้แต่งจะพบจุดตัดกันของความเข้ากันได้ของเวอร์ชันระหว่างทุกสิ่งที่แอปพลิเคชันต้องการ (รวมถึงไลบรารีทั้งหมดที่ติดตั้งแล้วและการอ้างอิง) และไลบรารีใหม่อาจทำการอัปเดตบางอย่าง หรือเกิดข้อผิดพลาดหากไม่สามารถหารุ่นที่เข้ากันได้)
  • ในกรณีนี้ CiviCRM เป็นห้องสมุดและไซต์ Drupal 8 นั้นเป็นแอปพลิเคชั่นโดยเฉพาะ (Drupal core เองเป็นห้องสมุด)
  • CiviCRM สามารถพูดได้ว่า "ต้องการ" Symfony ^2.5ใน composer.json ซึ่งหมายความว่ามันเข้ากันได้กับรุ่น 2.5.0 ขึ้นไป (แต่ไม่รวม) 3.0.0
  • เมื่อไซต์ Drupal 8 ต้องการใช้ CiviCRM ผู้ดูแลไซต์ใช้composer require civicrm/civicrm-coreเพื่อต้องการไลบรารี CiviCRM และการพึ่งพาทั้งหมด หาก CiviCRM เข้ากันได้กับ Symfony 2.8 (เช่นใช้ใน Drupal 8.3.x) ทุกอย่างจะติดตั้งและทำงานได้ดีโดยใช้ Symfony 2.8 เดี่ยวจาก Drupal การพึ่งพาทั้งหมดจะจบลงในไดเรกทอรีผู้ขายของ Drupal
  • อย่างไรก็ตาม CiviCRM สามารถเก็บ Symfony 2.5 ไว้ใน composer.lock ซึ่งหมายความว่าการทดสอบจะใช้มันและ tarballs สำหรับ Drupal 6 & 7 และ CMS อื่น ๆ จะรวม Symfony 2.5 ไว้ด้วย

ข้อเสนอ:

  1. อัปเดต composer.json ของ CiviCRM เพื่อให้สามารถใช้เป็นห้องสมุดโดย CMS ที่ใช้นักแต่งเพลงเช่น Drupal 8 (แต่คนอื่นอาจจะย้ายแบบนั้นในอนาคต - นักแต่งเพลงกำลังได้รับความนิยมมาก)
  2. ตรวจสอบให้แน่ใจว่าแกน CiviCRM เข้ากันได้กับ Symfony 2.8 และ 3.0 (ใช้โดย Drupal 8.3.x และ 8.4.x ตามลำดับ) แต่เก็บรุ่น "สนับสนุนอย่างเป็นทางการ" (ปัจจุบัน Symfony 2.5) ใน composer.lock สำหรับการทดสอบและ tarball สำหรับการแจกจ่าย การเข้ากันได้กับ Symfony หลายรุ่นอาจไม่ยากอย่างที่คิด - มีไลบรารีจำนวนมากที่เข้ากันได้กับทั้ง Symfony 2.8 และ 3.0 มันอาจเป็นแค่เรื่องของการหลีกเลี่ยงเมธอด / คลาส / ฟีเจอร์ที่เลิกใช้แล้ว! ผู้แต่งจะต้องได้รับการอัปเดตเพื่อแสดงถึงสิ่งนี้
  3. ใช้ผู้แต่งเพื่อติดตั้งไลบรารี CiviCRM บน Drupal 8 แทนที่จะคัดลอกลงในไดเรกทอรีของไลบรารี นี่เป็นวิธีปกติในการติดตั้งไลบรารี PHP ของบุคคลที่สามใน Drupal 8 (ตัวอย่างนี้ถูกใช้อย่างกว้างขวางโดย Drupal Commerce เป็นต้น)

สำหรับ CMS ของนักแต่งเพลงฉันคิดว่านี่เป็นวิธีที่ถูกต้อง ในขณะที่ปัญหานี้ส่งผลกระทบต่อ Symfony และ Drupal ในขณะที่ชุมชน PHP เริ่มใช้ห้องสมุดบุคคลที่สามมากขึ้นผ่านทางผู้แต่งเพลงสิ่งนี้อาจส่งผลกระทบต่อ CMS อื่น ๆ ที่มีข้อขัดแย้งรุ่นอื่น ๆ ได้เป็นอย่างดี

รหัสการทำงานที่จะทดสอบ:

ดังนั้นตามสัญญาฉันได้รับสิ่งนี้เพื่อทำงานในระดับที่ จำกัด :-) ฉันมาที่นี่โดยสิ้นเชิงจากมุมมองของ Drupal / นักแต่งเพลง / Symfony - ฉันไม่มีประสบการณ์ CiviCRM มากมายดังนั้นอาจมีบางอย่าง วิธีที่ดีกว่าในการทำกระบวนการของฉันด้านล่าง ฉันยินดีให้คำแนะนำใด ๆ !

  1. ดาวน์โหลดและติดตั้ง Drupal 8.3.5 (หรือ dev ล่าสุดของ Drupal 8.4.x!)
  2. ไปที่ไดเรกทอรีรากในเปลือกและเรียกใช้คำสั่งเหล่านี้เพื่อติดตั้ง CiviCRM ผ่านผู้แต่ง: https://gist.github.com/dsnopek/56311dbea347874e75180883efabb620
  3. หากคุณใช้ Apache ให้ลบไฟล์ผู้ขาย / .htacess นี่เป็นมาตรการรักษาความปลอดภัยจาก Drupal ซึ่งป้องกันไม่ให้โหลดทรัพยากรเช่น CSS / JS สิ่งนี้จะต้องมีการทำงานร่วมกันกับโครงการ Drupal เพื่อหาทางออกที่เหมาะสมเนื่องจากการลบไฟล์นี้ทั้งหมดเป็นความคิดที่ไม่ดีในการผลิต ดู: ผู้จัดจำหน่าย / .htaccess ปิดกั้น CSS / สินทรัพย์ JS จากห้องสมุดนักแต่งเพลง
  4. ไปที่ไดเร็กทอรี / modules และทำ git clone https://github.com/dsnopek/civicrm-drupal.git --branch composer-library
  5. ไปที่หน้า "ขยาย" ( /admin/modules) และติดตั้งโมดูล CiviCRM
  6. ล้างแคช drupal ผ่าน Drush ( drush cr)
  7. ออกจากระบบและเข้าสู่ระบบอีกครั้งต่อCRM-19878
  8. CiviCRM ใช้งานได้! :-)

หลังจากทั้งหมดนี้ CiviCRM ใช้ Symfony 2.8 จาก Drupal และการอ้างอิงในไดเรกทอรีผู้จัดจำหน่ายของ Drupal และไม่โหลดอะไรจากไดเรกทอรีผู้จำหน่ายของตนเอง Huzzah!

ฉันทดสอบการเปิดใช้งานโมดูล "โทรศัพท์" ซึ่งล้มเหลวก่อนการเปลี่ยนแปลงเหล่านี้ (ดูขั้นตอนการทำซ้ำ ) :-)


ดังนั้นนี่คือคำถามที่เกี่ยวข้องกับทั้งหมดนี้โดยใช้ผู้แต่ง .... เป็นไปได้ไหมที่จะมีหนึ่งแพ็คเกจใช้ Symfony 2.8 และอีกแพ็คเกจใช้ Symfony 3.2 ....
jackrabbithanna

มีการต่อต้านสถาบันที่ค่อนข้างยากต่อ CiviCRM ที่ต้องใช้รุ่น Symfony ที่ Drupal 8/9 ทำอยู่เสมอ
jackrabbithanna

1
"การใช้นักแต่งเพลง .... เป็นไปได้หรือไม่ที่จะมีหนึ่งแพ็คเกจใช้ Symfony 2.8 และอีกแพ็คเกจใช้ Symfony 3.2" -> ไม่ PHP ไม่สามารถมีสองคลาสที่มีชื่อเดียวกันได้ นี่ไม่ใช่สิ่งที่นักแต่งเพลงจริงๆ
David Snopek

"มีการต่อต้านสถาบัน CiviCRM ที่ค่อนข้างยากที่จะต้องใช้รุ่นของ Symfony ที่ Drupal 8/9 ทำอยู่เสมอ" -> สิ่งที่ต้องใช้ใน CiviCRM หลักต้นน้ำคือรหัสนั้นเข้ากันได้กับ Symfony ที่ใช้ใน Drupal ในภายหลัง มันจะไม่ต้องรวมมันหรือใช้ตามค่าเริ่มต้นเพียงเข้ากันได้เช่น หลีกเลี่ยงวิธี / คลาส / คุณสมบัติที่เลิกใช้แล้ว
David Snopek

ฉันเข้าใจว่าทำไมเราถึงสนใจใช้งาน Symfony สองรุ่นใหญ่ข้าง ๆ กัน - SemVer sorta แสดงถึงความจำเป็น แต่ฉันคิดว่ามันสำคัญที่องค์ประกอบของ Symfony จำนวนมากนั้นคล้ายคลึงกันใน v2 / v3 และการรวม viv ของ Civi นั้นค่อนข้างเรียบง่าย ดังนั้นฉันจึงมองโลกในแง่ดีเกี่ยวกับการมีหรือรับรหัส PHP ที่เข้ากันได้กับทั้งสอง IMHO งานที่แท้จริงคือการปรับปรุงโครงสร้างช่องทางการจำหน่ายและไดเรกทอรี
Tim Otten

5

ฉันไม่คิดว่ามันเป็นไปได้

Drupal 8.4 ได้เปลี่ยนมาใช้ Symfony 3 แล้วแม้ว่าจะมีการสนทนาที่คล้ายกันที่เกี่ยวข้องกับ drush ซึ่งมีปัญหาเหมือนกัน เห็นDrush 8.x ไม่ได้ติดตั้ง Drupal 8.4.x และ Drush master ไม่ได้ติดตั้ง Drupal 8.3.xและSymfony ได้รับการอัพเดตเป็น 3.2.6

เป็นไปไม่ได้ที่จะโหลดสองรุ่น symfony ที่แตกต่างกันไม่ว่าคุณจะหยุดการรวมหรือทำลาย Drupal บางที symfony3 จะยังไม่อยู่ใน 8.4 แต่การสนับสนุนความปลอดภัยสำหรับ symfony2 จะสิ้นสุดก่อนที่การสนับสนุนด้านความปลอดภัยของ Drupal8 ดังนั้นในบางจุดเราจะต้องเปลี่ยน


ดี ..... ทุกอย่างทำงานได้ยกเว้นการติดตั้งโมดูลจากผู้ดูแลระบบ / โมดูล .... การติดตั้งโมดูลด้วย Drush ทำงานได้ ... หน้า CiviCRM ทั้งหมดใช้งานได้ ดังนั้นฉันจึงไม่มั่นใจว่าเป็นไปไม่ได้ ทำไมมันเป็นไปไม่ได้
jackrabbithanna

1
คุณไม่สามารถโหลดคลาสเดียวกันสองเวอร์ชันในเวลาเดียวกันซึ่งเป็นไปไม่ได้ ข้อผิดพลาดเสียงเหมือนสิ่งที่ฉันคาดว่าจะเกิดขึ้น คุณจัดการเพื่อโหลดคลาส 2.5 ของคลาส Definition ก่อนแล้วจึงแบ่ง Drupal เพราะมันคาดว่าจะมีวิธีการที่ไม่มีจริง และความแตกต่างจะใหญ่ขึ้นเมื่อ Drupal เปลี่ยนไปที่ Symfony 3 ฉันไม่ค่อยเข้าใจว่าทำไมคุณถึงติดกับ 2.5, 2.8 คือการอัพเดทเล็กน้อยและควรจะเข้ากันได้ย้อนหลัง (แต่ไม่ใช่วิธีอื่น ๆ ตามที่คุณค้นพบ) ดังนั้นคุณควรจะอัปเดต CiviCRM ให้เป็น 2.8
Berdir

1
ดังที่ฉันได้กล่าวถึงในความคิดเห็นของฉันฉันคิดว่าคุณไม่ต้องการให้ฉันตอบ แต่นั่นไม่ได้เปลี่ยนแปลง ไม่มีโครงการใดที่คุณพูดถึงใช้ symfony (joomal ดูเหมือนว่าจะใช้ส่วนประกอบจำนวนหนึ่งที่อาจไม่ขัดแย้ง แต่อาจจะเกิดขึ้นในที่สุด) ดังนั้นคุณจึงไม่สามารถเปรียบเทียบได้ เป็นไปไม่ได้ในทางเทคนิคที่จะโหลดสองเวอร์ชันที่ขัดแย้งกันของคลาสเดียวกันไม่มีอะไรสามารถเปลี่ยนแปลงได้ นั่นเป็นสาเหตุที่การพึ่งพาเป็นธุรกิจที่ซับซ้อนและทำไมนักแต่งเพลงจึงมีอยู่ แทนที่จะใช้ห้องสมุดคุณควรใช้การแต่งเพลงและทำให้ CiviCRM สามารถใช้งานร่วมกับ
Symfony

2
นอกจากนี้การสนับสนุนความปลอดภัยสำหรับ Symfony 2.5 สิ้นสุดลงในปี 2558 ตามsymfony.com/roadmap?version=2.5#checkerซึ่งหมายความว่า CiviCRM ถูกสร้างขึ้นบนเวอร์ชัน symfony ที่ไม่ปลอดภัยและล้าสมัย เพียงอย่างเดียวก็เพียงพอที่จะโน้มน้าวใจพวกเขาว่าจำเป็นต้องมีการอัปเดตอย่างน้อยเป็นเวอร์ชัน 2.8 ไม่ใช่แค่เกี่ยวกับ Drupal8
Berdir

1
@DavidSnopek ถูกต้องสิ่งที่คุณเขียนในคำตอบของคุณนั้นเป็นสิ่งที่ฉันพูดถึงในความคิดเห็นของฉันเช่นกัน แต่ตราบใดที่ผู้ประพันธ์ ดูgithub.com/civicrm/civicrm-core/blob/master/composer.json ดังนั้นคำตอบของฉัน "คุณไม่สามารถใช้สองรุ่นที่แตกต่างกัน" ยังคงถูกต้อง IMHO คุณสามารถปรับปรุง / อัปเดตข้อ จำกัด รุ่นใน civicrm แล้วติดตั้งผ่านผู้แต่งและใช้เวอร์ชันเดียวกัน
Berdir

1

ในทางทฤษฎีปัญหาเฉพาะที่นี่คือที่ตั้งไฟล์และเนมสเปซของคลาส น่าเสียดายที่เครื่องมือเดียวที่ฉันรู้จักในผู้แต่งเพลงสำหรับการทำที่ไม่อนุญาตให้คุณระบุต่อ VERSION ต่อชื่อแพ็คเกจ

คุณลองตั้งค่าเป็นออโต้โหลดแยกกันโดยสิ้นเชิงหรือไม่?


คุณช่วยอธิบายรายละเอียดเพิ่มเติมว่าคุณหมายถึงอะไร?
jackrabbithanna

getcomposer.org/doc/faqs/…เป็นวิธีการกำหนดตำแหน่งเอง ฉันเคยเห็นคนแยกโครงการเพื่อทำให้สิ่งนี้เป็นไปได้ ... นอกจากนี้getcomposer.org/doc/06-config.md#prepend-autoloaderสำหรับตัวเลือกในการแยกออโต้โหลดของผู้แต่ง ในตอนท้ายออโต้โหลดเดอร์เป็นเพียงไฟล์ php ดังนั้นคุณสามารถเขียนออโต้โหลดเดอร์ของคุณเองเพื่อตัดสินใจว่าจะรวมออโตเดอร์ใดขึ้นอยู่กับปัจจัยที่คุณต้องการ
Ohthehugemanatee

มีความเกี่ยวข้องด้วย: stackoverflow.com/questions/30000063/…
Ohthehugemanatee

ชัดเจนว่า ATM ไม่มีวิธีการติดตั้งแบบผู้แต่งเพื่อติดตั้ง Civi ด้วย D8 แม้ว่าฉันอาจจะเป็นวิธีหนึ่งในการบรรลุเป้าหมายนี้ นั่นคือสิ่งที่วัตถุ ServiceProvider กล่าวถึงในคำถามนั้นเกี่ยวกับเช่นเพิ่ม namespace PSR-4 ไปยัง Drupal เพื่อชี้ไปที่ห้องสมุด CiviCRM ... ถ้าฉันทำสิ่งนี้ Civi จะต้องเปลี่ยนไฟล์ทั้งหมดจาก 'ใช้ Symfony \ .... 'เป็น' ใช้ Civicrm \ Symfony \ .. 'หรือไม่ ให้อภัยความไม่รู้ของนักแต่งเพลงของฉันได้โปรด
jackrabbithanna
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.