Apaccy Posted April 16, 2012 Share 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, Link to comment Share on other sites More sharing options...
Apaccy Posted April 17, 2012 Author Share 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. @+ Link to comment Share on other sites More sharing options...
cizario Posted October 2, 2012 Share 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 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