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-07 10:14:28

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

[Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

Bonjour

j'essaie de comprendre à quoi correspond l'id que l'on trouve sur les champs que l'on souhaite afficher dans la cle à molette et ajouter dans les filtres :

soit ici dans le plugin alerte on a pour le champs date de modification
     $tab[] = [
         'id'               => 19,
         'table'            => $this->getTable(),
         'field'            => 'date_mod',
         'name'             => __('Last update'),
         'datatype'         => 'datetime',
         'massiveaction'    => false,
      ];

dans le plugin databases on a :
     $tab[] = [
         'id'            => '14',
         'table'         => $this->getTable(),
         'field'         => 'date_mod',
         'massiveaction' => false,
         'name'          => __('Last update'),
         'datatype'      => 'datetime'
      ];

donc, pour le meme champs (date de modification) on a des id différents : pourquoi ?
à quoi correspondent ils ?
sont-ils des id gérés par le plugin lui-meme et dans ce cas, que doit on mettre ?

d'autre part, sur la visualisation principale de mon plugin( soit une liste) je ne vois par defaut que le nom. j'aurais aimé voir d'autres champs : quel est le module qui affiche la liste par defaut ? certes je vois bien son appel (search::show('nomclasse'). je m'attendrais à ce qu'il appelle un showform, mais a priori le showform est plutot celui de la vue detail de la liste...

Merci pour vos retours et infos

Last edited by ec2311 (2023-06-29 18:16:44)


GLPI 10.0.10
GLPIinventory 1.3.4

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

Offline

#2 2023-06-07 10:18:19

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

Re: [Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

Bonjour

L'ID est une valeur entière arbitraire. Certaines valeurs sont par convention définies pour les colonnes ID et name qu'on retrouve presque toujours dans une table. De mémoire vous avez les search options prédéfinies dans CommonDBTM::rawSearchOption. Je vous conseill de mettre dans votre méthode un appel "parent::rawSearchOptions();". Regardez l'implémentation pour voir les search options que vous récupèrerez, et ajoutez les vôtres dans votre propre implémentation.

Pour un itemtype donné, chaque ID doit être unique. Il n'y a pas vraiment de règle. Je me souviens que les ID peuvent entrer en conflit entre plusieurs itemtypes quand on utilise les fonctions de recherche de la classe Search. Je crois avoir rencontré une fois le cas, mais c'était il y a très très longtemps. Je ne suis même pas sûr que ces problèmes de conflit existent encore.

Des ID peuvent être différents pour une colonne de même nom dans des itemtypes différents. Cela n'a pas d'importance.


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-07 10:44:17

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

Re: [Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

Bonjour @btry,

Merci de votre reponse

pour le parent::rawsearchoptions() : vous dites de le spécifier dans la méthode . j'ai spécifié ceci :
   function rawSearchOptions() {

      $tab = parent::rawSearchOptions();
     
je n'obtiens qu'un champs dans la clé : le nom.

du coup obligé d'ajouter mes champs, je pense.

cela fonctionne : super et je vois bien les champs choisis sur l'ecran dans l'ordre voulu.


concernant l'affichage principal : par defaut je ne vois qu'un seul champs. (sauf apres avoir ajouté les champs) : ou est géré cet affichage par defaut de la liste des champs du plugin ?
Merci bien


GLPI 10.0.10
GLPIinventory 1.3.4

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

Offline

#4 2023-06-07 10:52:40

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

Re: [Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

> du coup obligé d'ajouter mes champs, je pense.

Oui, c'est bien ce que j'ai dit : seules les search options les plus essentielles (pour le moteur de recherche et la gestion des entités notttament) sont prédéfinies par l'implémentation parent.

> concernant l'affichage principal : par defaut je ne vois qu'un seul champs. (sauf apres avoir ajouté les champs) : ou est géré cet affichage par defaut de la liste des champs du plugin ?

Je pense que vous parlez de la liste des éléments (URL qui se termine en plugins/foo/front/bar.php , bar étant votre itemtype).
Les colonnes visibles sont définies par les "display preferences" qu'on trouve sur les ordinateurs par exemple. Cela se configure avec la petite clé (wrench en anglais) visible sous le moteur de recherche. Je ne sais pas si vous avez codé pour l'afficher.

Autre option, prédéfinir les display preferences dans la table glpi_displaypreferences. A l'installation de votre plugin par exemple, avec la méthode Migration::updateDisplayPrefs() (c'est documenté par un docblock). CA vous permet de définir l'affichage initiale de la liste, que l'utilsiateur pourra personnaliser (selon que vous affichez ou pas le moteur de recherche).


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

#5 2023-06-07 10:58:40

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

Re: [Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

- Gestion des champs via la clé : ok , oui j'ai bien installé la clé : tout est ok poru 'lajout et suppression des champs

- affichage par defaut : ok, donc c'est bien via la table glpi_displaypreferences que cela se réalise, et je vois bien mon plugin dedans, avec les id que j'ai spécifiés dans le rawsearchoptions()

donc ok, à l'installation du plugin il faut rajouter alors ces 'elements' dans cette table via la methode que vous avez spécifiée.

Un grand Merci pour toutes les informations


GLPI 10.0.10
GLPIinventory 1.3.4

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

Offline

#6 2023-06-09 10:36:44

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

Re: [Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

Bonjour @btry

de maniere generale, la recherche fonctionne.

Maintenant, j'essaie d'ajouter des champs d'une table enfant.
J'ai vu que l'on pouvait utiliser la fonction rawSearchOptionsToAdd que j'ai implémentée dans la classe enfant.

néanmoins, j'obtiens une erreur sql dans le on clause.
en effet, il préfixe le nom de la zone enfant avec le nom de mon plugin (?) en l'occurence plugin_monplugin : d'ou peut provenir ce nom ?

voici ce que j'ai spécifié dans le rawsearchoptionstoadd
...
      $tab[] = [
         'id'                 => '20',
         'table'              => static::getTable(),
         'field'              => 'name',
         'name'               => __('Nom'),
         'datatype'           => 'string',
         'forcegroupby'       => true,
         'splititems'         => true,
         'massiveaction'      => false,
         'joinparams'         => [
            'jointype'           => 'child',
            'condition'          => '',
         ]
      ];
...

je pense que cela est du au jointype ?
Merci

Last edited by ec2311 (2023-06-09 14:40:43)


GLPI 10.0.10
GLPIinventory 1.3.4

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

Offline

#7 2023-06-09 14:40:27

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

Re: [Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

j'ai reussi à faire fonctionner
Je ne sais pas si c'est corrrect, mais cela est fonctionnel wink

en l'occurence
j'ai supprimé la notion de join et d'enfant

pour mettre simplement un
linkfield => id


GLPI 10.0.10
GLPIinventory 1.3.4

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

Offline

#8 2023-06-12 08:51:29

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

Re: [Resolu]Creation Plugin : question sur 'id' dans rawsearchoptions

Bonjour

Le problème vient peut être du fait que vous avez une clé étrangère qui ne respecte pas les conventions de nommage de GLPI. C'est difficile à dire car je ne connais pas les tables concernées, ni la requête en défaut.

Quand une table a une clé étrangère vers une table d'un plugin, la clé étrangière doit avoir un nom qui commence par plugin_<pluginname>_<itemtypename>_id

pluginname est  le nom du plugin, tel que défini par le nom du dossier le contenant, itemtypename est le nom de l'itemtype avec un 's' en suffixe. Vous pouvez regarder tout plugin utilisant des tables reliées entres elles par des clés étrangères pour avoir des exemples.


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

Board footer

Powered by FluxBB