THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour amis développeurs smile


Je suis entrain développer un plugin permettant de gérer des inscriptions à une course.

La partie permettant de récupérer les informations des coureurs en front-office est fonctionnelle, mes difficultés viennent de l'architecture du code pour créer le back-office.

J'ai créé un formulaire de recherche qui fonctionne et un formulaire d'édition des données (en provenance de la table du plugin) pour modifier les données d'un inscrit et les mettre à jour. C'est là que ça ne fonctionne pas. Je n'arrive pas à faire appeler ma fonction de mise à jour lors du submit du formulaire.

Voici un extrait code du fichier coureur_admin.php

if($_REQUEST['page']=="coureur_recherche"){
	include_once('fonctions/search.php');
	include('coureur_recherche.php');	
}
else if($_REQUEST['page']=="coureur_edition"){
        include_once('fonctions/retrieve.php');
	include_once('fonctions/update.php');
	include('coureur_edition.php');
}

else{
	include('dashboard.php');
}

Quand je vais sur coureur_recherche, je suis bien redirigé et mon formulaire de recherche fonctionne. Pour chaque inscrit, j'ai un bouton édition qui appelle la page coureur_edition avec en paramètre l'id du coureur.
Sur cette page, je recharge les données du coureur grâce à l'id passé en paramètre.

Mais lors du submit, je n'arrive pas à appeler ma fonction qui met à jour les données. J'ai essayé de recharger le formulaire en appelant une fonction chargé en même temps que la page (dans update.php de mon plugin), et là je sors du plugin...
et j'ai essayé d'appelé une action du plugin (code dans coureur.class.php) et rien non plus.

Dans ma dernière tentative voici le code du formulaire:

<form class="form-horizontal" action="#" method="POST">
			
 <input type="hidden" name="actioncoureur" id="actioncoureur" value="update" />

....
</form>

et dans mon fichier .class j'ai ça:

Le switch:

switch($action){
			case "charger":
				$this->charger();
				break;
			case "ajoutcoureur":
				$this->ajout_coureur();
				break;
			case "creationcommande":
				$this->crea_commande();
				break;
			case "coureur_recherche":
				$this->recherche();
				break;
		}

Je ne vais jamais dans recherche() et je ne rentre même pas dans le switch d'ailleurs.

Je ne suis un peu perdu sur ce coup, quelqu'un aurait un conseil sur l'architecture à mettre en place ?

Merci d'avance! smile

Offline


Préfère la fonction lireParam() que directement $_REQUEST.
Le détail sur l'utilisation de cette fonction est disponible ici : http://thelia.net/wiki/index.php/Toolbox (chapitre : "Récupérer les paramètres en GET ou POST de manière sécurisé (à partir de la version 1.4.3)").

Ensuite, ton formulaire tu vas faire quelque chose comme ça :

<form action="module.php?nom=lenomdumodule&amp;monparam=mavaleur" method="post">

    <input type="hidden" name="nom" value="lenomdumodule" />
    <input type="hidden" name="monparam" value="mavaleur" />

    ...

</form>

Plugins : Modèles Thelia | Boucle libre | Rubriques déclinables en produits | Colissimo Access/Expert

Offline


Merci pour l'astuce, mais j'ai toujours le même problème.

Quand je valide le formulaire, on dirait que je sors de mon module. Si je recharge la page avec la même URL c'est bon.


URL après le submit module.php?nom=coureur&page=coureur_edition&param=update&id=1306

sad

Offline


Ce champ hidden ci-dessous est il bien présent ?

<input type="hidden" name="nom" value="coureur" />

Plugins : Modèles Thelia | Boucle libre | Rubriques déclinables en produits | Colissimo Access/Expert

Offline


Yep:

<input type="hidden" name="nom" value="coureur" />
<input type="hidden" name="param" value="update" />

Offline


Pour avoir utilisé les formulaires plusieurs fois sans soucis, il doit y'avoir un oubli ou quelque chose qui cloche.

Trois possibilités pour résoudre ton problème :
- Tu réduis le code de ton plugin à sa plus simple expression pour enlever le reste du code et tester uniquement le formulaire.
- Tu regardes le code d'un autre plugin.
- Tu soumet ton code en archive qu'on puisse installer et tester (si c'est privé, il te faudra épurer).


Plugins : Modèles Thelia | Boucle libre | Rubriques déclinables en produits | Colissimo Access/Expert