Score:2

อัปเดต FieldStorageConfig สำหรับฟิลด์ใน hook อัปเดตอย่างถูกต้องหรือไม่

ธง in

ฉันจำเป็นต้องอัปเดตตัวเลือกค่าที่อนุญาตในฟิลด์ list_integer ด้วยเหตุผลต่างๆ ในขณะนี้ ฉันไม่สามารถอัปเดตและส่งออกการกำหนดค่าและนำเข้าในการผลิตได้จนกว่าเราจะนำ config_ignore ไปใช้ นอกจากนี้ ฉันไม่ต้องการแก้ไขบล็อกหลายประเภทเพื่ออัปเดตฟิลด์บางฟิลด์ที่กำลังเกิดขึ้นในหลายๆ สภาพแวดล้อม ดังนั้นหากฉันสามารถเขียนสคริปต์ได้และประหยัดเวลา นั่นคือสิ่งที่ฉันต้องการจะทำ

ในการอัปเดต hook ฉันกำลังลองสิ่งนี้:

/**
 * อัปเดตตัวเลือกผลลัพธ์สำหรับฟิลด์จำนวนผลลัพธ์
 */
ฟังก์ชัน mymodule_update_8001(&$แซนด์บ็อกซ์) {
  $allowed_values ​​= [];

  สำหรับ ($x = 1; $x < 16; $x++) {
    $allowed_values[$x] = (สตริง) $x;
  }

  $allowed_values[50] = '50';
  $allowed_values[75] = '75';
  $allowed_values[100] = '100';

  $old_config = FieldStorageConfig::load('block_content.field_result_count');
  $new_config = $old_config->createDuplicate();
  $new_config->ต้นฉบับ = $new_config;
  $new_config->enforceIsNew(เท็จ);
  $new_config
    ->setSetting('allowed_values', $allowed_values)
    ->บันทึก();
}

ดูเหมือนจะเพิ่มค่าใหม่ลงในฟิลด์ แต่เทอร์มินัลคายสิ่งนี้ออกมาเมื่อเรียกใช้การอัปเดตฐานข้อมูล:

> [คำเตือน] ยืนยัน (): ไม่สามารถโหลดเอนทิตี "field_storage_config" ด้วย NULL ID ล้มเหลว EntityStorageBase.php:249
> [คำเตือน] array_flip(): สามารถพลิกค่า STRING และ INTEGER ได้เท่านั้น! EntityStorageBase.php:266

นี่เป็นวิธีที่เหมาะสมในการอัปเดตฟิลด์ที่มีอยู่หรือไม่

4uk4 avatar
cn flag
คุณโหลด แก้ไข และบันทึกเอนทิตีการกำหนดค่าไม่ได้หรือ คุณต้องการสามบรรทัดพิเศษสำหรับการสร้างสำเนาหรือไม่
Kevin avatar
in flag
ไม่จำเป็นต้องทำซ้ำ? กำลังจะออกจากตัวอย่างที่ฉันเห็นทางออนไลน์
4uk4 avatar
cn flag
ไม่ การโคลนและการตั้งค่าต้นฉบับจะทำโดยคอร์โดยอัตโนมัติหากจำเป็น ตัวอย่างอาจมาจากคลาสฐานของเอนทิตีหลัก
Score:2
ธง in

เกือบจะอยู่ที่นั่นในตอนแรก แต่ด้วย 4k4 นี่เป็นวิธีหนึ่งในการแก้ไขรายการค่าที่อนุญาตด้วยค่าใหม่:

/**
 * ใช้ hook_install ()
 *
 * การกระทำแรกจะอัปเดตตัวเลือกผลลัพธ์สำหรับฟิลด์จำนวนผลลัพธ์
 * ตัวเลือกควรเป็น 1-15, 50, 75 และ 100
 */
ฟังก์ชัน mymodule_update_8001(&$แซนด์บ็อกซ์) {
  $allowed_values ​​= [];

  สำหรับ ($x = 1; $x < 16; $x++) {
    $allowed_values[$x] = (สตริง) $x;
  }

  $allowed_values[50] = '50';
  $allowed_values[75] = '75';
  $allowed_values[100] = '100';

  $config = FieldStorageConfig::load('ENTITY_TYPE.FIELD_ID');
  $การกำหนดค่า
    ->setSetting('allowed_values', $allowed_values)
    ->บันทึก();
}

โพสต์คำตอบ

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