ฉันกำลังสร้างโมดูลที่กำหนดเองใน Drupal 8 ซึ่งมีไฟล์กำหนดค่า YAML บางไฟล์
ขณะที่ฉันพัฒนาฉันต้องเปลี่ยนและเพิ่มการกำหนดค่าเช่นเพื่อเพิ่มฟิลด์อื่นลงในเอนทิตีที่กำหนดเองของฉัน
ในปัจจุบันวิธีเดียวที่ฉันได้รับ Drupal สังเกตเห็นการเปลี่ยนแปลงคือการถอนการติดตั้งโมดูลและติดตั้งใหม่
มีวิธีใดที่จะทำให้ Drupal ตรวจสอบว่าไฟล์ config ที่โมดูลจัดเตรียมไว้นั้นเหมือนกับการกำหนดค่าที่ใช้งานอยู่และถ้าไม่ให้อัพเดทการตั้งค่าที่ใช้งานอยู่ มีการจัดการปรับปรุงโมดูลอย่างไร ใน D7 hook_update_N
จะถูกใช้เพื่อเพิ่มฟิลด์โดยใช้ PHP แต่ดูเหมือนว่า CM นี้จะได้รับการจัดการโดย D8?
สิ่งที่ฉันได้ลองหลังจากอัปเดตไฟล์ yml ในโมดูล:
drush cr
, กำหนดค่าการซิงค์การคัดลอกไฟล์กำหนดค่าที่อัปเดตด้วยตัวเองทั้งหมด
sites/default/files/config_XXX/staging/
- แต่นี่ทำให้เกิดข้อผิดพลาดนี้"การกำหนดค่าแบบฉากไม่สามารถนำเข้าได้เพราะมันมาจากไซต์อื่นนอกเหนือจากไซต์นี้คุณสามารถซิงโครไนซ์การกำหนดค่าระหว่างอินสแตนซ์ .การอิมพอร์ตไฟล์ด้วยตนเองทีละคนโดยใช้ตัวจัดการการกำหนดค่า วิธีนี้ใช้ได้ผล แต่จะต้องมีวิธีอัตโนมัติมากกว่า
[แก้ไข] ใช้โมดูลconfig_updateด้วยตนเองเพื่อตรวจสอบการเปลี่ยนแปลงและ 'เปลี่ยนกลับ' เป็นค่ากำหนดของโมดูล นี่เป็นคู่มืออีกครั้ง
แก้ไข:จากการจัดการการกำหนดค่า - สิ่งที่ต้องทำและไม่ควรทำ
DON'TS
ลองเปลี่ยนการกำหนดค่าที่ใช้งานอยู่บนเว็บไซต์ของคุณโดยเปลี่ยนไฟล์ในไดเรกทอรี config / install ของโมดูล สิ่งนี้จะไม่ทำงานเนื่องจาก Drupal จะอ่านจากไดเรกทอรีนั้นเมื่อติดตั้งโมดูลเท่านั้น
... แต่การเปลี่ยนแปลงจะเกิดขึ้นเว้นแต่ว่าโมดูลจะเชื่อมโยงกับสิ่งที่พวกเขาต้องการในการปล่อยครั้งแรกและอาจไม่เคยปรับปรุงหรือเพิ่มการกำหนดค่า
ขอบคุณล่วงหน้า.
hook_update_N
ฉันคิด แต่ฉันไม่แน่ใจว่าอะไร
hook_update_N
กลับไป บทความที่ยอดเยี่ยมเกี่ยวกับDrupal 8 สำหรับไซต์ขนาดเล็ก (และตอนที่ 2 ) ใน D8 "เว็บไซต์ที่เป็นเจ้าของการกำหนดค่าของพวกเขาไม่ Modules"