Score:1

JSON:API FieldEnhancers - การลบวัตถุทรัพยากรออกจากการตอบสนอง JSON:API

ธง de

ฉันต้องการลบวัตถุทรัพยากร (ในกรณีนี้คือย่อหน้า) ออกจากการตอบสนอง JSON:API เมื่อตรงกับเงื่อนไขเฉพาะ ฉันไม่ต้องการลบมัน ฉันแค่ต้องการแยกออบเจกต์ออกจากการตอบกลับ

เข้าใกล้: ฉันลองใช้ FieldEnhancer เพื่อเข้าถึงออบเจกต์ทรัพยากรใน "doUndoTransform()" ตรวจสอบเงื่อนไขและข้าม/ลบก่อนที่จะแสดง

ปัญหา: จนถึงตอนนี้ฉันประสบความสำเร็จในการแก้ไขข้อมูลของวัตถุทรัพยากรของฉันเท่านั้น ฉันสามารถจัดการเนื้อหาของมันได้ แต่ฉันยังไม่ทราบวิธีแยกออกจากผลลัพธ์

คำถาม: มีวิธีหรือทางเลือกอื่น (สำหรับแนวทาง FieldEnhancer) เพื่อให้บรรลุเป้าหมายของฉันหรือไม่? ฉันคิดเกี่ยวกับการขยายสคีมาใน "getOutputJsonSchema()" แต่เนื่องจากไม่มีเอกสาร ฉันจึงไม่มีตัวเลือกที่เป็นไปได้

ติดตั้ง:

บทความ (โหนด) | รายการ (ย่อหน้า) | รายการ | รายการ (ย่อหน้าที่มี FieldGroup ที่กำหนดเองของฉันพร้อมเกณฑ์) (ดูด้านล่าง)

FieldEnhancer ของฉันแนบมากับ รายการ วนซ้ำแต่ละรายการ สิ่งของ ใน รายการ เพื่อดึงรหัสเอนทิตีและเงื่อนไข FieldGroup แบบกำหนดเองซึ่งมีเงื่อนไขสามารถแนบกับเอนทิตีใดๆ ได้ ดังนั้นการใช้ FieldEnhancer กับทรัพยากรเฉพาะจึงค่อนข้างรวดเร็วเช่นกัน

ตัวอย่างโค้ด FieldEnhancer:

/**
 * {@inheritdoc}
 */
ฟังก์ชันที่ได้รับการป้องกัน doUndoTransform($data, Context $context): ผสม
{
    $entityId = $this->getEntityId($context);
    // ถ้าตกลง แสดงวัตถุ
    ถ้า ($this->fieldGroupProcessor->isCondition($entityId)) {
       ส่งคืน $data;
    }

    // อื่นคืน null / ข้าม / ลบวัตถุ
}

ฟังก์ชันสาธารณะ getOutputJsonSchema(): อาร์เรย์
{
    กลับ [
        'ประเภท' => 'วัตถุ',
        'คุณสมบัติ' => [],
    ];
}

ตัวอย่างวัตถุทรัพยากร JSON:API:

{
ประเภท: "ย่อหน้า--ลิงค์ด่วน",
id: "3eabd16d-92a5-468d-9968-ad7e24797340",
ลิงก์: {
    ตัวเอง: {
        href: "http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340"
    }
},
คุณลักษณะ: {
    หัวข้อ: "การทดสอบ"
},
ความสัมพันธ์: {
    ลิงก์ด่วน_รายการ: {
        ข้อมูล: [{
            พิมพ์: "ย่อหน้า--quicklink_item",
            id: "af04ef25-bee5-401d-b5f7-1bf742349dde",
            เมตา: {
                target_revision_id: 230829,
                drupal_internal_target_id: 36089
            }
        },
        {
            พิมพ์: "ย่อหน้า--quicklink_item",
            id: "0831315b-f6bd-46a4-87bf-feff5c9473bc",
            เมตา: {
                target_revision_id: 230831,
                drupal_internal_target_id: 36091
            }
        },
        {
            พิมพ์: "ย่อหน้า--quicklink_item",
            รหัส: "53b2a7d2-4388-4e5f-8681-a91cbe0e07c7",
            เมตา: {
                target_revision_id: 230833,
                drupal_internal_target_id: 36301
            }
        }],
        ลิงก์: {
            ที่เกี่ยวข้อง: {
                href: "http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340/quicklinks_items"
            },
            ตัวเอง: {
                href: "http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340/relationships/quicklinks_items"
            }
        }
    }
}

},

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา