almeidaz Posted April 8, 2015 Share Posted April 8, 2015 (edited) Bonjour, j'ai crée un module qui ajoute un nouvelle onglet dans l'admin d'un produit avec l'aide de hookDisplayAdminProductsExtra Dans celui-ci j'ai crée un bouton qui est à l'image de celui que l'on peut trouver dans virtualproduct.tpl celui du virtualproduct.tpl : <a href="{$currentIndex|escape:'html':'UTF-8'}&deleteVirtualProduct=true&updateproduct&token={$token|escape:'html':'UTF-8'}&id_product={$product->id}" class="btn btn-default" onclick="return confirm('{l s='Do you really want to delete this file?' js=1}');"><i class="icon-trash"></i> {l s='Delete this file'}</a> le mien dans mon module.tpl : <a href="{$currentIndex|escape:'html':'UTF-8'}&pappDelete=true&updateproduct&token={$token|escape:'html':'UTF-8'}&id_product={$product->id}" class="btn btn-default" onclick="return confirm('{l s='Do you really want to delete this file?' js=1}');"><i class="icon-trash"></i> {l s='Delete this file'}</a> la seule chose qui change c'est l' appelle de la function : pappDelete=true Donc si je modifie le fichier AdminProductsController.php en ajoutant ma fonction : public function processPappDelete() { echo "hello du adminproducts controller"; exit; } et en ajoutant aussi dans function initProcess() if (Tools::getValue('pappDelete')) { if ($this->tabAccess['delete'] === '1') $this->action = 'pappDelete'; else $this->errors[] = Tools::displayError('You do not have permission to delete this.'); } mon bouton fonctionne. le problème c'est que je ne souhaite pas modifier le fichier AdminProductsController.php mais appeler la fonction qui est dans mon module directement. Pour cela dans mon module.php j'ai mis ceci : public function hookActionProductUpdate($params) { if (Tools::getValue('pappDelete')) { if ($this->tabAccess['delete'] === '1') $this->action = 'pappDelete'; else $this->errors[] = Tools::displayError('You do not have permission to delete this.'); } ... puis aussi la fonction : public function processPappDelete() { echo "hello"; exit; } malheureusement je n'arrive pas atteindre la fonction de mon module. il appelle toujours la fonction de AdminProductControllers.php avez-vous une idée de comment puis-je faire pour appeler la fonction de mon module? Merci d'avance. Edited April 8, 2015 by almeidaz (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted April 8, 2015 Share Posted April 8, 2015 forcément en mettant {$currentIndex vous renvoyez vers la page en cours^^, indiquez le chemin vers votre module, ça ira mieux Link to comment Share on other sites More sharing options...
almeidaz Posted April 8, 2015 Author Share Posted April 8, 2015 (edited) merci d'avoir repondu rapidement mais j'avoue etre un peu perdu. Dans mon cas mon module s'appelle pappmod. Il est situé dans modules/pappmod/pappmod.php Comme tu le précises j'utilise currentIndex ce qui donne en lien du bouton : http://127.0.0.1/projects/Demoprestashop/admin9977/index.php?controller=AdminProducts&pappDelete=true&updateproduct&token=8dfeeca2952d486b7866187cabad123e&id_product=1 comment dois-je indiquer le chemin du module? index.php?controller=pappmod&pappDelete=true si je fais ca il me dis controller introuvable. ou alors index.php?controller=AdminProducts&module=pappmod&pappDelete=true ou encore index.php?module=pappmod&pappDelete=true tous ca se sont des idées car je n'ai plus aucune idée à quoi cela doit ressembler. puis je m'aider d'un helper pour retrouver mon chemin ? j'ai vu un fichier nommer ModuleAdminController.php peut-il m'aider dans mon cas? dois-je definitivement supprimer controller=AdminProducts de mon url ou bien lui ajouter quelque chose? sa à l'air simple mais plus j'y reflechi et plus je m'embrouille. Merci d'avance. Edited April 8, 2015 by almeidaz (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted April 9, 2015 Share Posted April 9, 2015 Générez l'url comme suit: $url = 'index.php?controller=AdminModules&module_name=pappmod&pappDelete=true&token='.Tools::getAdminTokenLite('AdminModules'); Link to comment Share on other sites More sharing options...
almeidaz Posted April 9, 2015 Author Share Posted April 9, 2015 (edited) Merci d' avoir pris le temps de répondre , malheureusement avec AdminModules&module_name= sa ne marche pas non plus . Cela me renvoi dans la page d'admin des modules sans aucun effet. J'ai réussi à obtenir ce que je voulais en ajoutant du javascript . Je commence par détailler certaine chose pour bien comprendre : je suis ici sur le .tpl du module qui est un onglet de la page admin d'un produit et non sur la page de la config du module le bouton en question devient: <div class="col-lg-5"> <div class="papp btn btn-default" {*onclick="return confirm('{l s='Do you really want to delete this file?' js=1}');"*}><i class="icon-trash"></i> {l s='Delete this file'}</div> j'ai donc passé onclick en commentaire car il ne sera plus utile dans ma facon de faire a suivre j' ai aussi ajouté class="papp j'enleve donc la methode get &pappDelete mon footer (j'ai pas tout mis, juste ce qui nous interesse) : <div class="panel-footer"> <a href="{$link->getAdminLink('AdminProducts')|escape:'html':'UTF-8'}" class="btn btn-default"><i class="process-icon-cancel"></i> {l s='Cancel'}</a> <input type="hidden" name="pappDeleteFile" id="pappDeleteFile" value=""/> <button type="submit" name="submitAddproduct" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save'}</button> <button type="submit" name="submitAddproductAndStay" id="submitAddproductAndStayPapp" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save and stay'}</button> </div> ici j' ajoute la ligne input type hidden pour pappDeleteFile et donne l'id="submitAddproductAndStayPapp" au button submit et j'ajoute le script suivant dans le tpl : <script type="text/javascript"> $(document).ready(function(){ $('.col-lg-5').find('.papp').attr('onclick',''); $('.col-lg-5').find('.papp').on('click',function(e){ if (confirm('Delete this file?')){ e.preventDefault(); var truc = 2; $('#pappDeleteFile').val(truc); $('#submitAddproductAndStayPapp').trigger('click'); }else{ e.preventDefault(); } }) }) </script> coté pappmod.php public function hookActionProductUpdate($params) { if (Tools::getValue('pappDeleteFile')) { $this->pappDeleteFile(); } ... } public function pappDeleteFile() { echo "bla bla mon code etc"; exit; } Comme ceci j'arrive à lancer mon code via mon bouton. J'espere avoir été clair et ne rien oublié de l 'explication. En gros, je passe d'une methode get en methode post. C'est dommage car j'aurais preferé la methode via l'url. Encore une fois s'il y a d'autres methodes possible je suis preneur mais je cherche surtout la method get. Alors peut etre en créant un controller dans modules/pappmod/controllers/admin/pappcontroller.php j' y arriverais (pas encore test). Edited April 10, 2015 by almeidaz (see edit history) 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