Tôi có trường tùy chỉnh sau:
/**
* Triển khai plugin của loại trường 'price_table'.
*
* @Loại lĩnh vực(
* id = "bảng_giá",
* default_widget = "price_table_widget",
* default_formatter = "price_table_formatter",
* )
*/
lớp PriceTable mở rộng FieldItemBase {
hàm tĩnh công khai mainPropertyName (): chuỗi {
trả về 'giá trị';
}
lược đồ hàm tĩnh công khai (FieldStorageDefinitionInterface $ field_definition): mảng {
trở lại [
'cột' => [
'giá trị' => [
'loại' => 'đốm màu',
'kích thước' => 'lớn',
'nối tiếp hóa' => ĐÚNG,
],
],
];
}
thuộc tính hàm tĩnh công khai Định nghĩa (FieldStorageDefinitionInterface $ field_definition): mảng {
$properties['value'] = MapDataDefinition::create()
->setLabel(t('Dữ liệu bảng'));
trả lại thuộc tính $;
}
hàm công khai setValue($values, $notify = TRUE) {
if (isset($values) && !empty($values['table'])) {
$values['value'] = $values['table'];
unset($values['table']);
cha mẹ::setValue($values, $notify);
}
}
hàm công khai isEmpty(): bool {
cố gắng {
$value = $this->get('value')->getValue();
dpm($value); //<<<
trả về !is_array($value) || trống($giá trị);
} bắt (MissingDataException | InvalidArgumentException $e) {
trả về SAI;
}
}
}
với tiện ích thích hợp (sử dụng thành phần biểu mẫu bảng) và trình định dạng. Quá trình chỉnh sửa diễn ra suôn sẻ, dữ liệu được tuần tự hóa được lưu trữ vào bản ghi cơ sở dữ liệu của thực thể của tôi. Tuy nhiên, khi đến với bộ định dạng, nó không hiển thị gì cả vì isEmpty()
ở trên luôn nhận một giá trị trống và trả về SAI
. Các đốm màu được lưu trữ ổn định (nhờ đặt giá trị()
ở trên) nhưng nó không được trường truy xuất.
Tôi đang thiếu gì ở đây?