You are not logged in.
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
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
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
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
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