MarcMarin Posted April 30, 2014 Share Posted April 30, 2014 Bonjour, voilà je suis dans un module perso de type admin et dans un tpl j'ai un bouton submit. Par exemple ce code fonctionne bien: <form id="sauvegarde" action="{$currentIndex}&add{$table}&myparam=passeok&token={$token}" method="post" class="form-horizontal"> <button type="submit" class="btn btn-default"> <i class="icon-save"></i> {l s='Enregistrer'} </button> </form> mais comme je dois passer d'autres paramètres dans l'url calculés par javascript, j'ai essayé ce code <form id="sauvegarde" action="" onSubmit="btnSave()" method="post" class="form-horizontal"> <button type="submit" class="btn btn-default"> <i class="icon-save"></i> {l s='Enregistrer'} </button> </form> avec en javascript function btnSave() { ... ici je mettre mon code pour calculer un paramètre var url = "{$currentIndex}&add{$table}&myparam=passeok&token={$token}"; document.getElementById('sauvegarde').action = url; }; problème, le message renvoie toujours "clé invalide" à l'exécution du bouton. Il me semble avoir lu quelque part qu'il fallait modifier les token à chaque appel de page, mais pas idée comment. à ce propos est-ce qu'on passer un paramètre au format json dans l'url comme en Ajax ? merci d'avance Link to comment Share on other sites More sharing options...
Fabien Serny Posted May 2, 2014 Share Posted May 2, 2014 Hello, Un token est normalement unique par combinaison de id_employee et par AdminTab / AdminController.Si votre code JS valide le formulaire vers le même AdminTab / AdminController, le token reste inchangé. Peux tu poster plus de ton code pour qu'on puisse t'aider à identifier le soucis ? Sur quelle version de PrestaShop es tu ? Link to comment Share on other sites More sharing options...
MarcMarin Posted May 2, 2014 Author Share Posted May 2, 2014 Merci pour le retour, je suis sous Prestashop 1.6 En fait quand je me suis aperçu (pas si sûr...) qu'on pouvait pas passer de format json par un formulaire post, j'ai changé pour un envoi par Ajax sans token et là a priori c'est accepté. Mais j'ai actuellement le même problème pour passer d'un controller standard à un autre perso (AdminOperations) dans la fonction standard renderview() qui affiche une liste d'enregs, chaque enreg dispose d'un lien de type: self::$currentIndex = self::$currentIndex.'&id_attribute_group='.(int)$id.'&viewattribute_group'; je voudrai modifier ce lien et le remplacer par: $tokenOperations = Tools::getAdminToken('AdminOperations'.intval(Tab::getIdFromClassName('AdminInteractidOperations')).intval($this->context->employee->id)); self::$currentIndex = 'index.php?controller=AdminOperations&id_attribute=25&token='.$tokenOperations; si je fait le test d'exécuter ce lien juste après cette ligne, il part bien sur mon controller et je n'ai pas de message de token invalide mais ce lien est ensuite encore complété a priori par classes/helper/HelperList.php via displayListContent() qui lui rajoute encore un token (donc une url avec 2 tokens => clé invalide...8-( juste avant de lancer le tpl S'il fallait écrire juste un bouton qui passe d'un controller à un autre quel serait en fait la syntaxe la plus simple ? merci d'avance HelperList.php Link to comment Share on other sites More sharing options...
Fabien Serny Posted May 2, 2014 Share Posted May 2, 2014 Utilises Tools::getAdminTokenLite('AdminOperations') déjà tu t'embêteras moins avec les concatenations Pour ce qui est de l'histoire des deux tokens, tu peux me donner un exemple de liens ? Pour le bouton, la syntaxe la plus simple c'est Tools::getAdminTokenLite je pense Link to comment Share on other sites More sharing options...
MarcMarin Posted May 2, 2014 Author Share Posted May 2, 2014 merci pour l'info, c'est plus simple en effet, on trouve souvent cette version sur le web $this->token = Tools::getAdminToken($className.(int)$this->id.(int)$cookie->id_employee); pour l'url avec les 2 tokens, c'était normal puisque j'en rajoutai un différent pour passer sur mon controller et le HelperList.php rajoutait celui du Controller en cours... je vais éviter de passer par ce helper qui fait trop goulet d'étranglement sur tous les controllers admin Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now