Trebuie să elimin un obiect resursă (în acest caz un paragraf) dintr-un răspuns JSON:API atunci când se potrivește cu o anumită condiție. Nu vreau să-l șterg, vreau doar să exclud obiectul din răspuns.
Abordare:
Am încercat să folosesc un FieldEnhancer pentru a accesa obiectul resursă în „doUndoTransform()”, verifică starea și o omit/elimină înainte de a fi afișată.
Problemă:
Până acum am reușit doar să modific datele obiectului meu resursă. Pot să-i manipulez conținutul, dar încă nu mi-am dat seama cum să-l exclud din rezultat.
Întrebare:
Există vreo modalitate sau probabil o alternativă (la abordarea FieldEnhancer) de a-mi atinge obiectivul? M-am gândit să extind schema în „getOutputJsonSchema()”, dar din cauza lipsei de documentație, îmi lipsesc opțiunile posibile.
Înființat:
Articolul (nodul) | Lista (paragraf) | Articole | Element (paragraf care conține FieldGroup personalizat cu criterii) (vezi mai jos)
FieldEnhancer este atașat la Listă buclă peste fiecare Articol în Articole pentru a prelua ID-ul entității și condiția. FieldGroup personalizat care deține condiția poate fi atașat la orice entitate, astfel încât utilizarea unui FieldEnhancer pe o anumită resursă este, de asemenea, destul de rapidă.
Exemplu de cod FieldEnhancer:
/**
* {@inheritdoc}
*/
funcția protejată doUndoTransform($date, Context $context): mixtă
{
$entityId = $this->getEntityId($context);
// dacă este ok afișați obiectul
dacă ($this->fieldGroupProcessor->isCondition($entityId)) {
returnează $date;
}
// altfel returnează null / săriți / eliminați obiectul
}
funcția publică getOutputJsonSchema(): matrice
{
întoarcere [
'type' => 'obiect',
'proprietăți' => [],
];
}
Exemplu de obiect resursă JSON:API:
{
tip: „paragraf--legături rapide”,
ID: „3eabd16d-92a5-468d-9968-ad7e24797340”,
linkuri: {
de sine: {
href: „http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340”
}
},
atribute: {
titlu: „Test”
},
relații: {
quicklinks_items: {
date: [{
tip: „paragraph--quicklink_item”,
ID: „af04ef25-bee5-401d-b5f7-1bf742349dde”,
meta: {
target_revision_id: 230829,
drupal_internal__target_id: 36089
}
},
{
tip: „paragraph--quicklink_item”,
ID: "0831315b-f6bd-46a4-87bf-feff5c9473bc",
meta: {
target_revision_id: 230831,
drupal_internal__target_id: 36091
}
},
{
tip: „paragraph--quicklink_item”,
ID: „53b2a7d2-4388-4e5f-8681-a91cbe0e07c7”,
meta: {
target_revision_id: 230833,
drupal_internal__target_id: 36301
}
}],
link-uri: {
legate de: {
href: „http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340/quicklinks_items”
},
de sine: {
href: „http://127.0.0.1:8088/jsonapi/paragraph/quicklinks/3eabd16d-92a5-468d-9968-ad7e24797340/relationships/quicklinks_items”
}
}
}
}
},