Tôi cần xóa một đối tượng tài nguyên (trong trường hợp này là một đoạn văn) khỏi phản hồi JSON:API khi nó phù hợp với một điều kiện cụ thể. Tôi không muốn xóa nó, tôi chỉ muốn loại trừ đối tượng khỏi phản hồi.
Tiếp cận:
Tôi đã thử sử dụng FieldEnhancer để truy cập đối tượng tài nguyên trong "doUndoTransform()", kiểm tra điều kiện và bỏ qua/xóa nó trước khi được hiển thị.
Vấn đề:
Cho đến nay tôi chỉ thành công trong việc thay đổi dữ liệu của đối tượng tài nguyên của mình. Tôi có thể thao tác với nội dung của nó nhưng tôi vẫn chưa tìm ra cách loại trừ nó khỏi đầu ra.
Câu hỏi:
Có cách nào hoặc có thể là giải pháp thay thế (đối với phương pháp FieldEnhancer) để đạt được mục tiêu của tôi không? Tôi đã nghĩ đến việc mở rộng lược đồ trong "getOutputJsonSchema()" nhưng do thiếu tài liệu nên tôi thiếu các tùy chọn khả thi.
Cài đặt:
Điều (nút) | Liệt kê (đoạn) | Mục | Mục (đoạn chứa Nhóm trường tùy chỉnh của tôi với tiêu chí) (xem bên dưới)
FieldEnhancer của tôi được đính kèm với Danh sách lặp qua mỗi Mục Trong vật phẩm để truy xuất ID thực thể và điều kiện. Nhóm trường tùy chỉnh chứa điều kiện có thể được đính kèm với bất kỳ thực thể nào, do đó, việc sử dụng FieldEnhancer trên một tài nguyên cụ thể cũng khá nhanh.
Ví dụ mã FieldEnhancer:
/**
* {@inheritdoc}
*/
chức năng được bảo vệ doUndoTransform($data, Context $context): hỗn hợp
{
$entityId = $this->getEntityId($context);
// nếu ok hiển thị đối tượng
if ($this->fieldGroupProcessor->isCondition($entityId)) {
trả lại dữ liệu $;
}
// nếu không thì trả về null / bỏ qua / xóa đối tượng
}
hàm công khai getOutputJsonSchema(): mảng
{
trở lại [
'loại' => 'đối tượng',
'thuộc tính' => [],
];
}
JSON:ví dụ về đối tượng tài nguyên API:
{
gõ: "đoạn văn--liên kết nhanh",
id: "3eabd16d-92a5-468d-9968-ad7e24797340",
liên kết: {
bản thân: {
href: "http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340"
}
},
thuộc tính: {
tiêu đề: "Thử nghiệm"
},
các mối quan hệ: {
liên kết nhanh_items: {
dữ liệu: [{
gõ: "đoạn văn--quicklink_item",
id: "af04ef25-bee5-401d-b5f7-1bf742349dde",
siêu: {
target_revision_id: 230829,
drupal_internal__target_id: 36089
}
},
{
gõ: "đoạn văn--quicklink_item",
id: "0831315b-f6bd-46a4-87bf-feff5c9473bc",
siêu: {
target_revision_id: 230831,
drupal_internal__target_id: 36091
}
},
{
gõ: "đoạn văn--quicklink_item",
id: "53b2a7d2-4388-4e5f-8681-a91cbe0e07c7",
siêu: {
target_revision_id: 230833,
drupal_internal__target_id: 36301
}
}],
liên kết: {
có liên quan: {
href: "http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340/quicklinks_items"
},
bản thân: {
href: "http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340/relationships/quicklinks_items"
}
}
}
}
},