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 2023-06-29 18:10:31

ec2311
Member
Registered: 2016-04-07
Posts: 309

[Resolu] Creation Plugin (Suite)

Bonjour

j'avance toujours dans ma creation smile

j'ai un nouveau petit "probleme".

J'ai un champs etat que l'on peut mettre à jour : ok
il est bien sauvegardé, tout fonctionne

cependant, sa modification doit induire la mise à jour d'un autre champs afin de mémoriser quand l'etat a été modifié.

dans quelle partie du coding plugin cela doit il etre géré ?

Merci

Last edited by ec2311 (2023-08-25 11:37:37)


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#2 2023-06-29 23:56:21

btry
Moderator
Registered: 2015-10-01
Posts: 593

Re: [Resolu] Creation Plugin (Suite)

Bonjour, si le champs à modifier fait partie du même itemtype vous pouvez gérer cela dans prepareInputForAdd() et / ou prepareInput forUpdate().

Si le champ à modifier appartient à un autre itemtype, lié par une clé étrangère, il faut gérer cela dans post_addItem() et / ou post_updateItem(). Dans ces cas là vous avez accès aux données fournies en POST dans $this->input, et champs non modifiés sont dans $this->fields.

Si vous êtes dans le cas particulier où votre champ a modifier appartient à un autre objet du même itemtype (plus rare) alors c'est le 2e cas qui est généralement le plus approprié.


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#3 2023-06-30 08:56:54

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [Resolu] Creation Plugin (Suite)

Hello @btry

Merci pour votre reponse, en effet cela fonctionne.

cependant,
j'ai un ensemble de fichiers entete/ligne
dans le fichier secondaire (enfant) je retrouve l'id du parent : ok

lorsque je fais la mise à jour je retrouve -1 dans ce champs id sad, pourtant il est bien sous format plugin_nomplugin_zone_id...
comme si, c'etait une valeur de creation ?

en fait j'ai l'impression que cela vient du showform, dans lequel $options ne contient pas le champs 'plugin_nomplugin_zone_id'.
Autant j'ai l'id de l'item enfant et [withtemplate] et [_target], mais rien d'autre sad

Last edited by ec2311 (2023-06-30 10:08:06)


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#4 2023-06-30 10:08:54

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [Resolu] Creation Plugin (Suite)

Je m'auto corrige

tout est ok

en fait lors de l'appel au display, je dois mettre display($_GET)

Merci !


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#5 2023-06-30 12:14:59

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [Resolu] Creation Plugin (Suite)

Par contre
si à partir d'une table parent (changement de status de l'entete), on doit mettre à jour l'ensemble des lignes de la table enfant :

j'aurais tendance à utiliser le prepareinputforupdate (car changement de status sur table actuelle de la classe) ?
mais d'un autre coté on fait la mise à jour d'enregistrement 'enfant' donc d'une autre classe... donc un post_updateItem...

Le prepareInputForUpdate fonctionne, mais en fait, il faut que je modifie ce champs induit que si un seul champs inducteur est modifié : la modification d'un autre champs ne doit pas modifier le champs induit : c'est uniquement pour 'memoriser' la date de changement d'un champs particulier. donc il faudrait vérifier entre  'ancienne' valeur et nouvelle valeur de ce champs.

Il me semble peut etre comprendre cela dans le formanswer.class.php, mais je n'en suis pas sur.

Last edited by ec2311 (2023-06-30 14:05:08)


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#6 2023-06-30 15:02:46

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [Resolu] Creation Plugin (Suite)

j'ai reussi à recuperer , comme vous l'aviez signalé, la valeur initiale dans $this->fields
$tableau = $this->fields
puis
$old_value=$tableau['champs']

je ne sais pas si il y a mieux, mais cela fonctionne wink


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#7 2023-07-07 16:04:15

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [Resolu] Creation Plugin (Suite)

Bonjour

Sur mon plugin j'ai donc parent/enfant
je reussis à integrer les valeurs id de l'enfant smile via la clé afin que ces valeurs soient visibles sur le parent (un peu comme la vue elements associés de application)

petit hic : je vois bien les id, mais ce n'est pas un champs 'hyperlink' alors que j'ai ajouté 'comme' dans la valeur application
ci-dessous c'est pour l'application et ses elements associés
$tab[] = [
         'id'            => '5',
         'table'         =>  Appliance_Item::getTable(),
         'field'         => 'items_id',
         'name'               => _n('Associated item', 'Associated items', 2),
         'nosearch'           => true,
         'massiveaction' => false,
         'forcegroupby'  =>  true,
         'additionalfields'   => ['itemtype'],
         'joinparams'    => ['jointype' => 'child']
      ];

ce que j'ai mis
       $tab[] = [
         'id'            => '16',
         'table'         =>  NomdeMaClasseEnfant::getTable(),
         'field'         => 'id',
         'name'               => _n('le champs', 'Les champs', 2),
         'nosearch'           => true,
         'massiveaction' => false,
         'forcegroupby'  =>  true,
         'joinparams'    => ['jointype' => 'child']
      ];

j'ai supprimé la notion de aditionnal fields, car je n'ai pas de champs itemtype dans ma table enfant :mais peut etre en faudrait il un ?

Merci pour vos conseils


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#8 2023-07-08 13:56:37

cconard96
Moderator
Registered: 2018-07-31
Posts: 2,432
Website

Re: [Resolu] Creation Plugin (Suite)

Bonjour,

Veuillez vous référer à la documentation du développeur concernant les options de recherche.

https://glpi-developer-documentation.re … -options-1


GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.

Offline

#9 2023-07-10 11:47:57

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [Resolu] Creation Plugin (Suite)

bonjour
Merci @cconard96

si j'ajoute 'datatype'           => 'itemlink', en effet j'obtiens le lien, mais seule la premiere valeur est affichee en hyper text, je vois alors une 'bulle' qui liste en effet l'ensemble des valeurs.
si je ne mets pas 'datatype'           => 'itemlink', je vois l'ensemble des valeurs (ce que j'aimerai donc voir) mais sans lien hyper text.

quand je regarde dans 'appliance.class.php (en 9.5.5)
$tab[] = [
         'id'            => '5',
         'table'         =>  Appliance_Item::getTable(),
         'field'         => 'items_id',
         'name'               => _n('Associated item', 'Associated items', 2),
         'nosearch'           => true,
         'massiveaction' => false,
         'forcegroupby'  =>  true,
         'additionalfields'   => ['itemtype'],
         'joinparams'    => ['jointype' => 'child']
      ];
-> je ne comprends pas comment le lien 'hypertext' est alors réalisé car là je n'ai aucune bulle et le lien hypertext est correctement realisé.

merci


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

Board footer

Powered by FluxBB