web-dev-qa-db-fra.com

Comment accéder aux paragraphes avec l'API JSON?

Avec le module API JSON, j'essaie d'accéder aux paragraphes. Dans l'objet JSON, il ne me permet pas d'accéder aux paragraphes imbriqués.

Comment pourrais-je accéder aux paragraphes avec l'API JSON?

***** Mise à jour avec la solution *****

  1. Dans l'appel API, vous devez avoir le format d'URL correct: /jsonapi/{entity_type_id}/{bundle_id}[/{entity_id}]?_format=api_json. La clé ici est d'ajouter ceci à la fin de votre URL pour l'appel api: ?include={name of paragraph}. Par exemple: /jsonapi/node/page?_format=api_json&include=field_testing_json_api

  2. Une fois que vous avez l'appel d'API correct, vous devez accéder au tableau de bord d'administration Drupal et aller à people/permissions et sous le Paragraphs Type Permissions section à laquelle vous devez accorder l'accès à view content au paragraphe spécifique auquel vous souhaitez que l'utilisateur accède.

2
Che Figueroa

2 étapes requises :)

  1. créer le (s) paragraphe (s) en effectuant une demande POST et en recevant l'ID de révision du paragraphe créé,
  2. mettre à jour l'entité parent en affectant les ID de révision des paragraphes au champ paragraphe (champ de référence de révision d'entité).

Étape 1.

jsonbody = {
    'data': {
        'type': 'paragraph--study_history',
        'attributes': {
            'parent_id': localStorage.getItem('uid'),
            'parent_type': 'user',
            'parent_field_name': 'field_study_history'
        },
        'relationships': {
            'field_school_ref': {
                'data': {
                    'type': 'node--school',
                    'id': this.reg_selectedUni['id']
                }
            }
        }
    }
};

return this.api.apiPost('/jsonapi/paragraph/study_history', {}, jsonbody)

Nous utilisons notre service personnalisé api (ApiService.ts) qui a la fonction apiPost qui fait exactement ce que vous imaginez :) La logique ci-dessus devrait donc être facile à adapter à votre propre code .

Notez que si vous souhaitez ajouter plus de champs (champs de texte par exemple, vous les ajoutez à la section des attributs).


Étape 2. Voici comment nous mettons à jour l'utilisateur, PATCH pour avoir les paragraphes "historique d'étude" créés.

const jsonbody = {
    'data': {
        'type': 'user--user',
        'id': uuid,
        'relationships': {
            'field_study_history': {
                'data': [
                    {
                        'type': 'paragraph--study_history',
                        'id': schoolhist_info['data']['id'],
                        'meta': {
                            'target_revision_id': schoolhist_info['data']['attributes']['revision_id'],
                        }
                    },
                    {
                        'type': 'paragraph--study_history',
                        'id': unihist_info['data']['id'],
                        'meta': {
                            'target_revision_id': unihist_info['data']['attributes']['revision_id'],
                        }
                    }
                ]
            }
        }
    }
};
return this.api.apiPatch(this.endpoint.getUsers + '/' + uuid, {}, jsonbody);

this.endpoint.getUsers est /jsonapi/user/user. Cela devrait suffire à le faire fonctionner, sinon commentez et je peux mettre à jour.

2
LittleTiger

Essayez d'utiliser http: //yourhost.local/jsonapi/ paragraph/myparagraph

Il est navigable via votre navigateur http: //yourhost.local/jsonapi

0
Zarpele