Apaccy Posted April 16, 2012 Posted April 16, 2012 Bonjour, Je développe un module. Lorsque je configure mon module dans le BO (back-office), j'aimerai que les enregistrements se fasse a travers des appel ajax et non depuis un bouton submit traditionnel. Ce-ci pour des raisons d'ergonomie. Le BO utilise un cookie dont le chemin est "admin". De ce fait, mon appel ajax devrai avoir une url de la forme : "/admin/*" pour conserver le fonctionnement d'identification par cookie. Ainsi, je ne pense pas pouvoir attaquer la configuration de mon module depuis l'url "/modules/" D'où ma question : comment exécuter une fonction de mon module(/modules/my_module/class.php) en ajax depuis le back-office? Merci a vous, Share this post Link to post Share on other sites More sharing options...
Apaccy Posted April 17, 2012 Posted April 17, 2012 Je n'ai pas réussit a "résoudre" mon problème, néanmoins, je vous fais part de mon avancée. J'ai crée un petit script dans le dossier admin de prestaShop : Ce fichier donne à tous les modules tiers (Administrable) la capacité de travailler en Async tout en conservant le système de sécurité de prestashop. Deux inconvénient : - création de fichiers dans le repertoir admin. - déconnection (redirection) <?php /** * file : /admin/ajax.module.php */ define('PS_ADMIN_DIR', getcwd()); include(PS_ADMIN_DIR.'/../config/config.inc.php'); /* Getting cookie or logout */ require_once(dirname(__FILE__).'/init.php'); $json_data = (object) array('status' => false, 'message' => '', 'data'=>array()); $module = empty($_GET['module']) ? null : $_GET['module']; $controller = empty($_GET['controller']) ? 'Ajax' : $_GET['controller']; $action = empty($_GET['action']) ? null : $_GET['action']; $param = empty($_GET['param']) ? null : $_GET['param']; $file = _PS_MODULE_DIR_ . '/' . $module . '/'.$controller.'.php'; if ( !empty($module) && file_exists($file) ) { require_once($file); $controller = ucfirst($controller); $ajax = new $controller(); if ( method_exists($ajax, $action) ) { try { $data = $ajax->$action($param); $json_data->status = true; $json_data->data = $data; } catch(Exception $e) { $json_data->message = $e->getMessage(); } } else { $json_data->message = "Unknow service action"; } } else { $json_data->message = "Unknow service"; } echo json_encode($json_data); public function getContent() { $html = <<<xxx <script> function submitForm() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readyState == 4) { if(xhr.status == 200) alert("Received:" + xhr.responseText); else alert("Error code " + xhr.status); } }; xhr.open( "POST", "ajax.module.php?module=my_module&controller=Ajax&action=save", true); ///prestashop/admin/ajax.module.php xhr.send(null); } </script> xxx; $html .= '<a href="javascript:submitForm();">send and load</a>'; return $html; } Ce n'est pas un super code, mais il est la et il pourrai intérésé des gens. @+ Share this post Link to post Share on other sites More sharing options...
cizario Posted October 2, 2012 Posted October 2, 2012 Salut; Pas mal du tout ! En fait; je suis en train de chercher une solution simple d'implémentation peut être L'api REST de Prestashop vous intéresse ? Moi non plus; en fait c'est assez basique juste appel ajax à une fonction dans controlleur (afin de respecter le modele OOP ) qui va renvoyer le résultat d'une requette sql simple sous forme de JSON, le tout est manipulé dans $.getJSON (url, function(data){ console.log(data); }) Merci pour votre éffort Share this post Link to post 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