Score:0

เป็นไปได้ไหมที่จะเปลี่ยนพาธ config_sync_directory โดยทางโปรแกรมหลังการติดตั้งโปรไฟล์

ธง cn

ฉันได้กำหนดการติดตั้ง Drupal 9 โดยใช้การติดตั้งโปรไฟล์แบบกำหนดเอง "config_sync_directory" ใน การตั้งค่า.php ไฟล์ใน การตั้งค่า $ อาร์เรย์เพื่อรับการกำหนดค่าโปรไฟล์ระหว่างการติดตั้ง

  1. ระหว่างการติดตั้งไซต์ Drupal ขอให้ระบุไดเร็กทอรี "config" ในไฟล์การตั้งค่า
  2. ในโปรไฟล์ที่กำหนดเอง ฉันมีการกำหนดค่าเริ่มต้น ฉันต้องการให้ Drupal อ่านการกำหนดค่าจากไดเร็กทอรีนั้นระหว่างการติดตั้ง เส้นทางที่ฉันระบุในไฟล์การตั้งค่า
  3. ตอนนี้ หลังการติดตั้ง ฉันต้องการระบุไดเร็กทอรีการซิงค์ config แยกต่างหาก และไม่ต้องการแก้ไขไฟล์ settings.php ครั้งแล้วครั้งเล่า เพียงแค่ต้องการอัปเดตพาธไดเร็กทอรีการซิงค์จาก hook ในโมดูลที่กำหนดเอง

เป็นไปได้ไหมที่จะเปลี่ยนเส้นทางโดยทางโปรแกรมจาก hook?

leymannx avatar
ne flag
คุณสามารถแก้ไขได้เพียงแค่ settings.php เหตุใดคุณจึงต้องอัปเดตจากเบ็ดบางตัว
Prashant Chauhan avatar
cn flag
โปรดตรวจสอบด้านล่างสำหรับเหตุผลที่ฉันต้องการสิ่งนี้ แต่ดูเหมือนจะเป็นไปไม่ได้
leymannx avatar
ne flag
คุณสามารถอัปเดตค่านั้นได้ตลอดเวลาหลังการติดตั้ง โดยเพียงแค่แก้ไข settings.php ฉันไม่เห็นคำอธิบายใด ๆ ที่อธิบายว่าทำไมคุณถึงไม่สามารถทำเช่นนั้นได้ เพียงเปิดไฟล์ settings.php ในตัวแก้ไขที่คุณเลือก (อาจล้างสิทธิ์ของไฟล์ก่อน) แก้ไขค่านั้น บันทึก (และอาจเพิ่มสิทธิ์อนุญาตไฟล์อีกครั้ง) เพียงให้แน่ใจว่าคุณย้ายไดเร็กทอรีการกำหนดค่าไปยังตำแหน่งใหม่ด้วย นั่นคือทั้งหมด
Prashant Chauhan avatar
cn flag
@leymannx ที่จริงสิ่งที่ฉันต้องการบรรลุคือ 1. ระหว่างการติดตั้งไซต์ Drupal ขอให้ระบุไดเร็กทอรี "config" ในไฟล์การตั้งค่า 2. ในโปรไฟล์ที่กำหนดเอง ฉันมีการกำหนดค่าเริ่มต้นบางอย่าง ฉันต้องการให้ Drupal อ่านการกำหนดค่าจากไดเร็กทอรีนั้นระหว่างการติดตั้ง เส้นทางที่ฉันระบุไว้ในไฟล์การตั้งค่า 3. ตอนนี้ หลังการติดตั้ง ฉันต้องการระบุไดเร็กทอรีการซิงค์ config แยกต่างหาก และไม่ต้องการแก้ไขไฟล์ settings.php ครั้งแล้วครั้งเล่า เพียงแค่ต้องการอัปเดตพาธไดเร็กทอรีการซิงค์จาก hook ในโมดูลที่กำหนดเอง หวังว่าฉันจะทำให้ข้อกำหนดชัดเจน
leymannx avatar
ne flag
เมื่อคุณติดตั้งโปรไฟล์ config จะถูกอ่านจากไดเร็กทอรี config ของโปรไฟล์ โดยไม่คำนึงว่าคุณกำหนดค่าอะไรใน settings.php และสิ่งสำคัญคือคุณต้องเพิ่มคำถามนั้นเข้าไปด้วย มิฉะนั้น คุณจะไม่ได้คำตอบที่คุณต้องการ
Prashant Chauhan avatar
cn flag
@leymannx นั่นไม่ใช่กรณีนี้ ระหว่างการติดตั้ง มันจะอ่าน config จากพาธ config ที่กำหนดในไฟล์การตั้งค่า
leymannx avatar
ne flag
หากไม่ได้ผลระหว่างการติดตั้ง แสดงว่ามีบางอย่างผิดปกติในโปรไฟล์ของคุณตรวจสอบไดเร็กทอรี config ของโปรไฟล์อื่น (ขั้นต่ำ, มาตรฐาน) ว่าควรกำหนดค่าตรงไหน
Score:0
ธง us

โมดูลสามารถแทนที่ค่าในวัตถุการกำหนดค่า ตามที่อธิบายไว้ใน ระบบการแทนที่การกำหนดค่า / ให้การแทนที่จากโมดูลโมดูลจำเป็นต้องใช้บริการที่ติดแท็ก config.factory.override. คลาสที่ใช้สำหรับบริการจำเป็นต้องดำเนินการ ConfigFactoryOverrideInterfaceดังตัวอย่างที่ระบุในเอกสารประกอบ

บริการ:
  config_example.overrider:
    คลาส: Drupal\config_example\Config\ConfigExampleOverrides
    แท็ก:
      - {ชื่อ: config.factory.override ลำดับความสำคัญ: 5}
เนมสเปซ Drupal\config_example\Config;

ใช้ Drupal\Core\Cache\CacheableMetadata;
ใช้ Drupal\Core\Config\ConfigFactoryOverrideInterface;
ใช้ Drupal\Core\Config\StorageInterface;

/**
 * ตัวอย่างการแทนที่การกำหนดค่า
 */
ConfigExampleOverrides คลาสใช้ ConfigFactoryOverrideInterface {

  /**
   * {@inheritdoc}
   */
  loadOverrides ฟังก์ชั่นสาธารณะ (ชื่อ $) {
    $แทนที่ = [];
    ถ้า (in_array ('system.site', $names)) {
      $overrides['system.site'] = ['name' => 'ชื่อไซต์ถูกลบ!'];
    }
    กลับ $overrides;
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ getCacheSuffix () {
    กลับ 'ConfigExampleOverrider';
  }
  
  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ getCacheableMetadata (ชื่อ $) {
    ส่งคืน CacheableMetadata ใหม่ ();
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ createConfigObject ($name, $collection = StorageInterface::DEFAULT_COLLECTION) {
    ส่งคืน NULL;
  }

}

โปรดทราบว่าค่าใน การตั้งค่า.php ไฟล์จะแทนที่ค่าโมดูลเสมอ สำหรับโมดูลในการตั้งค่าคอนฟิกูเรชัน การตั้งค่า.php ไฟล์ไม่จำเป็นต้องตั้งค่า

Prashant Chauhan avatar
cn flag
ฉันคิดว่าคุณเข้าใจคำถามของฉันผิด ฉันกำลังกำหนดเส้นทางโฟลเดอร์ config sync ใน settings.php ซึ่งทำงานได้อย่างถูกต้อง หลังจากนั้นเมื่อติดตั้ง Drupal สำเร็จแล้ว ฉันต้องการอัปเดตเส้นทางโฟลเดอร์การซิงค์การกำหนดค่านี้ และไม่ใช่การกำหนดค่า แต่เป็นการตั้งค่า
cn flag
ไม่มีข้อผูกมัดสำหรับการเขียนทับการตั้งค่าส่วนกลางหากคุณหมายถึงสิ่งนั้น ไม่จำเป็นต้องใช้ คุณสามารถแก้ไข settings.php เพื่อแสดงค่าใหม่ที่ต้องการแทนการแก้ไข hook ในไฟล์โมดูล
4uk4 avatar
cn flag
ใช่ การตั้งค่าเป็นแบบอ่านอย่างเดียว เฉพาะในการทดสอบเท่านั้นที่จะแทนที่อินสแตนซ์ซิงเกิลทั้งหมด ตัวอย่างเช่น [KernelTestBase::setUpFilesystem](https://api.drupal.org/api/drupal/core%21tests%21Drupal%21KernelTests%21KernelTestBase.php/function/KernelTestBase%3A%3AsetUpFilesystem)
Prashant Chauhan avatar
cn flag
ขอบคุณทุกคนสำหรับการชี้แจง
Rafael avatar
uz flag
ด้วย cli drush config-import --source=SOURCE คุณสามารถกำหนดโฟลเดอร์ปรับแต่งเฉพาะได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา