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-10-20 15:37:43

Xamdev
Member
Registered: 2020-10-09
Posts: 6

Création d'un formulaire dans un plugin

Bonjour à tous,
Je suis depuis plusieurs jours sur la création d'un plugin, qui commence par la page de configuration. Sur celle-ci, j'ai un simple formulaire avec un seul input qui permet la modification du nombre de filtres maximum qu'on pourra créer sur une page helpdesk.

Pour le moment j'ai bien un affichage du formulaire avec récupération du nombre de filtres max en BDD (ajouté manuellement en BDD).
J'aimerai pouvoir, avec l'input type submit du formulaire, pouvoir modifier ce nombre et qu'il soit modifié en base de données.

Le problème est que je ne vois pas comment gérer la redirection du formulaire et la manipulation de données.
Comment faire une redirection sur la même page en éxecutant une requête SQL en fonction des données du formulaire ? Faut-il passer par l'ajax ?
Je pense qu'il y a une "convention" pour le faire en restant dans les codes de GLPI.
J'ai regardé beaucoup de doc sans trouver la réponse appropriée. (je suis sous GLPI 9.3)


Voici mon fichier config.class.php :

public function showForm(){

        global $CFG_GLPI;
        $modify = false;
        $create = false;
        $max_filters = "";

        $max_filters = self::getConfiguration();


        // si max_filters est défini, on est en train de modif
        if($max_filters != "") {
            $modify = true;
            $createUpdate = "Modifier";

        }
        else {
            $create = true;
            $createUpdate = "Ajouter";
        }
        
        echo "<div align='center'>"; 
        echo "<form action=\"".$GLPI_ROOT.
        "/plugins/mycustomview/front/config.form.php\" method='post'>\n";
        echo "<table class='tab_cadre_fixe' style='margin: 0; margin-top: 5px;'>\n";
        echo " <tr><th colspan='2'>$createUpdate le nombre de filtres maximum pour la page \"vue personnelle\".</th></tr>\n";
        echo "<td style='width: 30%'><label for ='max_filters'>Nombres de filtres : </label></td>";
        echo "<td style='width: 70%'><input type ='number' min='1' max='30' id='max_filters' value= '$max_filters' name='max_filters' placeholder='Min : 1 / Max : 30' required</td>";
        echo "</table>\n";
        echo "<input type='submit' style='margin-top : 10px' name='$createUpdate' class='submit' ".
        "value='$createUpdate'>";
        echo "</div>"; 
        Html::closeForm();
    }

Voici mon fichier config.form.php qui appelle ma fonction showForm :

include ('../../../inc/includes.php');

Session::checkLoginUser();

if ($_SESSION["glpiactiveprofile"]["interface"] == "central") {
   Html::header("TITRE", $_SERVER['PHP_SELF'], "plugins", "pluginmycustomview", "");
} else {
   Html::helpHeader("TITRE", $_SERVER['PHP_SELF']);
}

   $config = new PluginMycustomviewConfig();

   if($max_filters = $config->getConfiguration()) {
      $config->showForm($max_filters);
   }
   else 
   {
      $config->showForm();
   }
   Html::closeForm();

Html::footer();

Merci d'avance si vous avez des pistes ou des conseils.

Offline

#2 2020-10-20 15:48:02

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Création d'un formulaire dans un plugin

Dans votre confif.form, vous devez gérer le cas 'createUpdate' qui est envoyé dans votre formulaire

Regarder cette doc: https://forge.glpi-project.org/projects … jet-Profil
elle n'est pas récente mais vous aurez le principe de fonctionnement


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#3 2020-10-20 15:54:20

Xamdev
Member
Registered: 2020-10-09
Posts: 6

Re: Création d'un formulaire dans un plugin

Effectivement j'ai déjà jeté un oeil à votre documentation. Je vais réessayer de reprendre depuis le début avec votre méthode.

Merci de votre réponse.

Offline

Board footer

Powered by FluxBB