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 *****
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
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 étapes requises :)
É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);
Où this.endpoint.getUsers
est /jsonapi/user/user
. Cela devrait suffire à le faire fonctionner, sinon commentez et je peux mettre à jour.
Essayez d'utiliser http: //yourhost.local/jsonapi/ paragraph/myparagraph
Il est navigable via votre navigateur http: //yourhost.local/jsonapi