You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2020-07-21 10:01:35

bagahe
Member
Registered: 2020-06-23
Posts: 16

API REST : Insérer dans une liste déroulante un item "enfant"

Bonjour à tous,

Je tourne en rond sur la question, et je n'arrive pas à trouver la solution qui je suis sur se trouve sur le forum en plus.
Afin de remplir les valeurs d'une liste déroulante crée via le plugin Fields, je veux pouvoir avoir plusieurs niveaux dans les données.

Par exemple :

Secteur Financier
-> Comptabilité
-> Gestion
Secteur Production
-> Hotline
-> Techniciens

J'arrive à enregistrer les valeurs "Secteur Financier" et "Secteur Production" sans problème, par contre je ne trouve pas la syntaxe pour expliquer à l'API que "Comptabilité" et "Gestion" sont des enfants de "Secteur Financier".

J'ai essayer de jouer avec l'url sur la requête Curl, sur l'input, mais rien à faire il ne veux pas.

Vous avez une solution de votre côté ?

Offline

#2 2020-07-30 11:14:13

bagahe
Member
Registered: 2020-06-23
Posts: 16

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Personne n'a d'idées ?

Offline

#3 2020-07-30 12:31:54

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 489

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Je n'ai jamais utiliser de liste hierarchique custom via l'API.
Pour les listes natives, quand on ajoute un enfant, il faut passer l'ID du parent. Il n'y a pas de nomenclature spécifique mais quand on ajoute l'enfant, il faut idiquer le niveau de profondeur et l'id du parent.

Quand tu crées un éléments "enfant" à la main puis que tu récupères cet élément via l'API, il a quoi comme attribus ?

Offline

#4 2020-07-30 14:52:26

bagahe
Member
Registered: 2020-06-23
Posts: 16

Re: API REST : Insérer dans une liste déroulante un item "enfant"

A la main cela fonctionne, les valeurs enfants/parents sont bien indiquées dans la base de données GLPI.

Je dois me manquer quelque chose dans la syntaxe je pense

J'ai tout essayer dans l'input, toute les variantes.
Comment cela se présente sur un cas "classique", hors champs fields ?

Last edited by bagahe (2020-07-30 14:53:35)

Offline

#5 2020-07-31 08:29:03

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 489

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Il faudrait que je puisse regarder dans un des scripts que j'ai fait pour un client mais je n'y aurai pas accès avant mi aout.

De mémoire, pour ajouter un élément "enfant", il faut donner
- Son nom
- son niveau (2, si c'est un enfant de première génération)
- l'ID du parent
Tout le reste est fait automatiquement.
Je me souviens que, quand ça a fonctionné, je me suis dis que, finalement, c'était très logique, mais je n'ai pas mon script sous les yeux.

Offline

#6 2020-07-31 09:11:21

bagahe
Member
Registered: 2020-06-23
Posts: 16

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Voilà mon input, à moins que je me trompe dans les nom de variables je ne vois vraiment pas T_T

	curl_setopt($ch, CURLOPT_POSTFIELDS, '{"input": {
                    "name": "'.$value.'",
                    "plugin_fields_'.$item.'Dropdowns_id": "'.$parent.'",
                    "level": "'.$level.'"
                    }}'
        );

Mes variables sont justes à chaque fois, il insère bien une ligne mais comme une entrée de niveau 1

Offline

#7 2020-07-31 09:17:15

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 489

Re: API REST : Insérer dans une liste déroulante un item "enfant"

De mémoire (toujours...) l'ID des parents ne contenait pas le nom du parent. La variable s'appelle "parent_id" ou un truc comme ça.
Quand tu fais un get sur une valeur 'enfant', tu as quoi comme propriétés ?

Offline

#8 2020-07-31 09:42:16

bagahe
Member
Registered: 2020-06-23
Posts: 16

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Voilà mon retour sur un get d'un enfant :

Array ( [id] => 63 [name] => Test Enfant [completename] => DAC > Test Enfant [comment] => [plugin_fields_branchedelamoadropdowns_id] => 49 [level] => 2 [ancestors_cache] => [sons_cache] => [entities_id] => 0 [is_recursive] => 0 [links] => Array ( [0] => Array ( [rel] => PluginFieldsBranchedelamoaDropdown [href] => http://localhost/glpi/apirest.php/PluginFieldsBranchedelamoaDropdown/49 ) [1] => Array ( [rel] => Entity [href] => http://localhost/glpi/apirest.php/Entity/0 ) ) )

Offline

#9 2020-07-31 10:13:58

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 489

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Je vais essayer de voir si je ne peux pas retrouver un script...

Offline

#10 2020-07-31 10:18:05

bagahe
Member
Registered: 2020-06-23
Posts: 16

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Merci, j'ai pratiquement terminé ce truc d'intégration c'est tout ce qu'il me manque

Offline

#11 2020-08-13 15:22:05

bagahe
Member
Registered: 2020-06-23
Posts: 16

Re: API REST : Insérer dans une liste déroulante un item "enfant"

Jean-Christophe wrote:

Il faudrait que je puisse regarder dans un des scripts que j'ai fait pour un client mais je n'y aurai pas accès avant mi aout.

De mémoire, pour ajouter un élément "enfant", il faut donner
- Son nom
- son niveau (2, si c'est un enfant de première génération)
- l'ID du parent
Tout le reste est fait automatiquement.
Je me souviens que, quand ça a fonctionné, je me suis dis que, finalement, c'était très logique, mais je n'ai pas mon script sous les yeux.

Bonjour, toujours coincé pour ma part, rien ne fonctionne pour ajouter un script enfant.

Offline

Board footer

Powered by FluxBB