Điểm:1

JSON:API FieldEnhancers - xóa đối tượng tài nguyên khỏi phản hồi JSON:API

lá cờ de

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"
            }
        }
    }
}

},

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.