เมื่อทำตามบทช่วยสอนและเอกสารประกอบ ฉันสามารถสร้างฟิลด์แบบกำหนดเองที่รองรับค่าสตริงเดียวได้ อย่างไรก็ตาม สิ่งที่ฉันต้องการทำให้สำเร็จคือรายการที่กำหนดเอง (โดยเฉพาะอย่างยิ่ง ช่องทำเครื่องหมาย
ชนิด) ซึ่งผู้ใช้สามารถเลือกตัวเลือกต่างๆ ได้ ฉันพยายามค้นหาใน core/modules/options schema.yml และการคัดลอกการตั้งค่าพื้นที่เก็บข้อมูลยังคงให้ผลลัพธ์เหมือนเดิม ฉันได้รับข้อผิดพลาด ค่านี้ควรเป็นประเภทดั้งเดิมที่ถูกต้อง
นี่คือสิ่งที่ฉันเชื่อว่าเป็นส่วนของโค้ดที่เกี่ยวข้องที่ฉันมีอยู่ในปัจจุบัน:
ในฟิลด์ประเภท/
สคีมาของฟังก์ชันสแตติกสาธารณะ (FieldStorageDefinitionInterface $field_definition) {
กลับ [
// คอลัมน์มีค่าที่ฟิลด์จะจัดเก็บ
'คอลัมน์' => [
'ค่า' => [
'ประเภท' => 'ข้อความ',
'ขนาด' => 'ปกติ',
'ไม่เป็นโมฆะ' => FALSE
'ซีเรียลไลซ์' => TRUE
]
]
'ดัชนี' => [
'ค่า' => ['ค่า'],
]
];
}
ในวิดเจ็ตฟิลด์/
ฟังก์ชันสาธารณะ formElement (FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$sglists = ['1' => 'a', '2' => 'b'];
$องค์ประกอบ['ค่า'] = $องค์ประกอบ + [
'#type' => 'ช่องทำเครื่องหมาย',
'#options' => $sglist,
'#empty_value' => '',
'#default_value' => (isset($items[$delta]->value) && isset($sglists[$items[$delta]->value])) ? $items[$delta]->value : NULL,
'#description' => t('เลือกรายการ Sendgrid'),
];
ส่งคืนองค์ประกอบ $;
}
ใน schema.yml
field.storage_settings.sendgridlists:
ป้ายกำกับ: 'รายการ Sendgrid'
ประเภท: การทำแผนที่
การทำแผนที่:
รายการที่เลือกได้:
ชนิด: ลำดับ
ป้ายกำกับ: 'รายการที่เลือกได้'
ลำดับ:
ประเภท: สตริง
ฉันค่อนข้างแน่ใจว่าปัญหาของฉันมาจาก schema.yml แต่ฉันไม่ค่อยเข้าใจวิธีเปลี่ยนจากค่าเดียวเป็นรายการหลายค่า (คล้ายกับแกน/โมดูล/ตัวเลือก)
ความช่วยเหลือใด ๆ ที่ได้รับความนิยมอย่างมาก รวมถึงลิงก์ไปยังโมดูลการสนับสนุนที่มีอยู่ซึ่งสร้างแบบกำหนดเองได้สำเร็จ ช่องทำเครื่องหมาย
ประเภทฟิลด์ที่ฉันสามารถอ้างอิงได้