ฉันต้องการลบวัตถุทรัพยากร (ในกรณีนี้คือย่อหน้า) ออกจากการตอบสนอง 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"
}
}
}
}
},