ฉันมีประเภทฟิลด์แบบกำหนดเองที่ฉันสร้างด้วยโมดูลแบบกำหนดเอง เป็นฟิลด์ข้อความธรรมดาที่ผู้ใช้พิมพ์สตริง ฉันต้องการเก็บสำเนาของฟิลด์นี้ไว้สองชุด:
- ค่าสตริงตรงตามที่ผู้ใช้พิมพ์
- ค่าที่ปลอดภัยของสตริงเดียวกัน
นี่คือวิธีที่ฉันสร้างฟิลด์:
คลาส MyItem ขยาย FieldItemBase {
/**
* {@inheritdoc}
*/
สคีมาของฟังก์ชันสแตติกสาธารณะ (FieldStorageDefinitionInterface $field_definition) {
กลับ [
'คอลัมน์' => [
'ค่า' => [
'ประเภท' => 'ข้อความ',
'ขนาด' => 'เล็ก',
'ไม่เป็นโมฆะ' => FALSE
]
'ค่าที่ปลอดภัย' => [
'ประเภท' => 'ข้อความ',
'ขนาด' => 'เล็ก',
'ไม่เป็นโมฆะ' => FALSE
]
]
];
}
¦
}
ฉันคิดว่าฉันควรสร้างไฟล์ มูลค่าความปลอดภัย
ของสตริงใน hook_node_presave()
และเข้าไปในเอนทิตีที่นั่น (แต่ยินดีต้อนรับการแก้ไขสมมติฐานเหล่านี้)
ฉันไม่มีปัญหาในการรับค่าสตริงตามที่ผู้ใช้พิมพ์และคำนวณค่าที่ปลอดภัย:
$value = $entity->field_myfield->getString();
$safevalue = makeSafe($value);
แต่ไม่รู้จะรับยังไง. $มูลค่าที่ปลอดภัย
เก็บไว้ในฐานข้อมูล
แก้ไข
ฉันเห็นว่านี่มีสองคำตอบที่เกือบจะเหมือนกัน ทั้งสองทำงานได้ดีถ้าจำนวนสมาชิกของฟิลด์เป็นหนึ่ง ดังนั้นฉันจึงโหวตให้ทั้งคู่ เนื่องจากฉันไม่สามารถรับทั้งสองได้ ฉันจึงยอมรับจาก apaderno สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ นิยามคุณสมบัติ()
.
ฉันยังไม่สามารถทำให้สิ่งนี้ทำงานกับฟิลด์ที่มีหลายค่าได้ แต่ฉันคิดว่าอาจต้องเป็นคำถามแยกต่างหาก