ฉันมีฟิลด์ที่กำหนดเองต่อไปนี้:
/**
* การใช้งานปลั๊กอินของประเภทฟิลด์ 'price_table'
*
* @FieldType(
* id = "ราคา_ตาราง",
* default_widget = "ราคา_table_widget",
* default_formatter = "ราคา_ตาราง_รูปแบบ",
* )
*/
class PriceTable ขยาย FieldItemBase {
ฟังก์ชันสแตติกสาธารณะ mainPropertyName (): สตริง {
ส่งคืน 'ค่า';
}
สคีมาฟังก์ชันสแตติกสาธารณะ (FieldStorageDefinitionInterface $field_definition): อาร์เรย์ {
กลับ [
'คอลัมน์' => [
'ค่า' => [
'type' => 'หยด',
'ขนาด' => 'ใหญ่',
'ซีเรียลไลซ์' => จริง,
]
]
];
}
คุณสมบัติฟังก์ชันคงที่สาธารณะคำนิยาม (FieldStorageDefinitionInterface $field_definition): อาร์เรย์ {
$properties['value'] = MapDataDefinition::create()
->setLabel(t('ข้อมูลตาราง'));
ส่งคืนคุณสมบัติ $;
}
ฟังก์ชันสาธารณะ setValue (ค่า $, $notify = TRUE) {
ถ้า (isset($values) && !empty($values['table'])) {
$values['value'] = $values['ตาราง'];
unset($values['ตาราง']);
parent::setValue($values, $notify);
}
}
ฟังก์ชั่นสาธารณะ isEmpty (): บูล {
พยายาม {
$value = $this->get('value')->getValue();
dpm (ค่า $); //<<<
ส่งคืน !is_array($value) || ว่างเปล่า (ค่า $);
} catch (MissingDataException | InvalidArgumentException $e) {
กลับ FALSE;
}
}
}
ด้วยวิดเจ็ตที่เหมาะสม (โดยใช้องค์ประกอบฟอร์มตาราง) และตัวจัดรูปแบบที่มีอยู่ การแก้ไขดำเนินไปได้ด้วยดี ข้อมูลซีเรียลไลซ์จะถูกจัดเก็บไว้ในบันทึกฐานข้อมูลของเอนทิตีของฉัน อย่างไรก็ตาม เมื่อพูดถึงฟอร์แมตเตอร์ มันไม่แสดงอะไรเลยเพราะ มันว่างเปล่า()
ด้านบนจะได้รับค่าว่างและส่งคืนเสมอ เท็จ
. หยดถูกเก็บไว้ทั้งหมด (ขอบคุณ ตั้งค่า()
ด้านบน) แต่ไม่ถูกดึงข้อมูลโดยฟิลด์
ฉันพลาดอะไรไปที่นี่?