Puncte:1

JSON:API FieldEnhancers - eliminarea unui obiect resursă dintr-un răspuns JSON:API

drapel de

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

},

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.