Tôi có một thực thể tùy chỉnh với trường được xác định như sau.
$fields['file'] = BaseFieldDefinition::create('file')
->setDescription('Tham chiếu đến loại thực thể Tệp lõi tích hợp sẵn.')
->setLabel('Tệp')
-> thiết lậpBắt buộc(TRUE)
->setSetting('file_extensions', 'pdf rtf doc docx')
->setSetting('max_filesize', '20MB')
->setSetting('description_field', TRUE)
->setDisplayOptions('form', ['type' => 'file'])
->setDisplayOptions('view', ['type' => 'file']);
Tôi không gặp vấn đề gì khi truy cập vào các trường được tham chiếu Tập tin
thực thể từ các phiên bản của loại thực thể của riêng tôi. Vì vậy, ví dụ, những dòng này hoạt động như mong đợi.
$filename = $my_entity->file->entity->filename->value;
$username = $my_entity->file->entity->uid->entity->name->value;
Khi tôi cố gắng sử dụng các trường của tham chiếu Tập tin
thực thể với một BảngSắp xếp
, mà tôi muốn đưa vào một truy vấn thực thể trên loại thực thể tùy chỉnh của mình, mã sẽ đưa ra một ngoại lệ.
$header['tên'] = [
'dữ liệu' => 'Tên tệp',
'trường' => 'tệp.thực thể.tên tệp',
'specifier' => 'file.entity.filename',
];
$header['người dùng'] = [
'dữ liệu' => 'Được tải lên bởi',
'trường' => 'file.entity.uid.entity.name',
'specifier' => 'file.entity.uid.entity.name',
];
// â¦
$query->tableSort($header);
Uncaught PHP Ngoại lệ Drupal\Core\Entity\Query\QueryException: "không tìm thấy 'tệp'"
Đối với cú pháp của tiêu đề $
mảng Tôi chủ yếu dựa vào manh mối mà tôi có được từ Sắp xếp bảng với EntityQuery, trong đó Berdir khuyên chúng ta nên xem xét trọng tải()
và buildHeader()
phương pháp của UserListBuilder
lớp. Thật không may, ví dụ đó dường như đang sử dụng các giá trị trường được lưu trữ trực tiếp trong bảng cơ sở, vì vậy tôi đang dựa vào giả định rằng, vì chúng ta đang ở trong vùng truy vấn thực thể, nên cú pháp tương tự được mô tả trong Giao diện truy vấn::điều kiện()
rất mong đợi.
Tôi đã xem xét một số vấn đề mở, chẳng hạn như Sắp xếp bảng bỏ qua "trường", luôn thêm tiêu đề tiêu đề làm tham số truy vấn đơn hàng và dọn dẹp bàn ăn, nhưng tôi không thấy bất cứ điều gì làm sáng tỏ vấn đề.