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 2024-05-22 11:33:09

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,363

[solved] Dropdown dans plugin

bonjour,
j'ai developpé un plugin pour gérer des document qui contenait 2 dropdown. so far so good, jusque là  tout va bien.
j'ai une demande des utilisateurs pour ajouter une liste déroulante dans le formulaire je crée donc un nouveau dropdown que j'intègre dans mon formulaire de saisie et d'affichage.

tout va bien, j'ai les droits pour saisir des valeurs, elles sont bien affichées, enregisrées dans les bonnes tables mais :

lorsque je fais une recherche sur ce dropdown avec "contient" ça marche et avec   "est " => j'ai un message "Uncaught Exception Error: Class "UNKNOWN" not found in /var/www/glpi/src/CommonDBTM.php at line 5174"

j'ai exactement les mêmes classes que pour mes 2 autres dropdows et je ne vois pas ce qui cloche.

voici un extrait de ma liste de critères de recherche

  /**
    * @return array
    */
   function rawSearchOptions() {

      $tab = [];

  
      $tab[] = [
         'id'                 => 'common',
         'name'               => self::getTypeName(2)
      ];
// j'ai ici d'autres critères  qui marchent bien 
      $tab[] = [
         'id'                 => '21',
         'table'              => $this->getTable(),
         'field'              => 'actenumero',
         'name'               => __('actenumero','actes'),
	 'massiveaction'      => false,
         'datatype'           => 'text'
      ];
      $tab[] = [
         'id'                 => '10022',
         'table'              => 'glpi_plugin_actes_actetransmissionmodes',
         'field'              => 'name',
         'name'               => __('actetransmissionmodes','actes'),
         'datatype'           => 'dropdown'
    ];
      $tab[] = [
         'id'                 => '22',
         'table'              => 'glpi_plugin_actes_actemotifs',
         'field'              => 'name',
         'name'               => __('actemotifs','actes'),
         'datatype'           => 'dropdown'
      ];
  // c'est ce dernier critère  qui ne marche pas bien
     $tab[] = [
         'id'                 => '10203',
         'table'              => 'glpi_plugin_actes_acteprefixes',
         'field'              => 'name',
         'name'               => __('acteprefixes','actes'),
         'datatype'           => 'dropdown' 
      ];
 
      return $tab;
   }

c'est uniquement dans la recherche sur ce dernier dropdown avec "est"  qui génére le message ( la recherche avec "contient" fonctionne)

une idée ?



edit : j'ai essayé un Dropdown::getDropdownName('glpi_plugin_actes_acteprefixes', ['value'  => $this->fields["plugin_actes_acteprefixes_id"]])  => ça ne renvoie rien non plus...


Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

#2 2024-05-22 13:45:32

cconard96
Moderator
Registered: 2018-07-31
Posts: 3,237
Website

Re: [solved] Dropdown dans plugin

La classe liée à « glpi_plugin_actes_acteprefixes » est-elle nommée « PluginActesacteprefixe » ?


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

#3 2024-05-22 13:48:21

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,363

Re: [solved] Dropdown dans plugin

la classe est nommée PluginActesActeprefixe

<?php
if (!defined('GLPI_ROOT')) {
   die("Sorry. You can't access directly to this file");
}

/**
 * Class PluginActesActeprefixe
 */
class PluginActesActeprefixe extends CommonDropdown {

   static $rightname         = "dropdown";
   var    $can_be_translated = true;

   /**
    * @param int $nb
    *
    * @return translated
    */
   static function getTypeName($nb = 0) {

      return  __('acteprefixes','actes');

   }


}

la table est bien "glpi_plugin_actes_acteprefixes"



mes autres classes (liées à des dropdowns) sont  PluginActesActemotif et  PluginActesActetransmissionmode et je n'ai pas de problème avec


Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

#4 2024-05-22 14:14:54

cconard96
Moderator
Registered: 2018-07-31
Posts: 3,237
Website

Re: [solved] Dropdown dans plugin

Le problème vient certainement de la traduction du nom de la table en nom de la classe. Après avoir examiné les règles de conversion des pluriels (comme ceux utilisés dans le nom de la table) en singulier (le nom de la classe), je pense que le nom de la classe doit être PluginActesActeprefix (pas de e final).
Voir src/DBUtils.php dans la fonction getSingular pour toutes les règles.


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

#5 2024-05-22 16:01:48

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,363

Re: [solved] Dropdown dans plugin

MERCI ! c'était ça.

mais si je renome ma classe en PluginActesActeprefix   la fonction  Dropdown::show  cherche la table Plugin_Actes_Acteprefixes .
j'ai dû renommer en  PluginActesActepref  et là tout fonctionne.

maintenant j'ai compris : pas de classe dropdown don le nom termine par "e" ou "x"  :-)


Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

Board footer

Powered by FluxBB