K.M.R72 Posted July 31, 2015 Share Posted July 31, 2015 (edited) Bonjour, je rencontre un problème qui me tracasse depuis 2 semaines déjà. je suis en stage depuis 2 mois et je dois faire une application pour ma soutenance. le projet qui m'a été confié au stage est la création d'un module. dans ce module je dois afficher la liste des clients exactement présenté comme l'onglet client de prestashop 1.6. j'aimeraiafficher cette meme liste là dansmon module. j'ai besoin de votre aide svp . voici à quoi ressemble la liste qui est dans l'onglet client que je veux afficher. Edited August 4, 2015 by K.M.R72 (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 31, 2015 Share Posted July 31, 2015 Bonjour, regardez le code utilisé par PrestaShop pour vous en inspiré cela me semble le plus simple. Link to comment Share on other sites More sharing options...
K.M.R72 Posted July 31, 2015 Author Share Posted July 31, 2015 j'ai déjà regardé le code du controlleur "AdminCustomers.php" qui concerne l'affichage de la liste. j'ai même essayé de l'inclure dans le fichier accueil de mon module . vu que le tableau qui affiche la liste des clients est placé dans le constructeur de "AdminCustomers.php" , lors de l'inclusion il devait être appelé automatiquement mais ce n'est pas le cas. la liste des clients ne s'affiche toujours pas dans mon module Link to comment Share on other sites More sharing options...
K.M.R72 Posted July 31, 2015 Author Share Posted July 31, 2015 oui c'est en back office. ok je vais essayer Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 2, 2015 Author Share Posted August 2, 2015 j'ai essayé en copiant la function __construct() de admincustomer dans la function __construct() de la page de mon module, ça ne signale pas d'erreur mais ça n'affiche pas la liste. svp pouvait créer un module et faire un exemple pour mieux m'expliquer? je vous en serai hyper reconnaissant car il me reste plus que 2 semaines pour finir mon application et ce n'est que cette liste qui manque Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 4, 2015 Author Share Posted August 4, 2015 svp je reste dans l'attente d'une solution. aidezmoi!!! Link to comment Share on other sites More sharing options...
herve25 Posted August 6, 2015 Share Posted August 6, 2015 Bonjour, Une piste pour ton développement serait de faire un controller admin pour ton module qui hérite de la classe AdminCustomersController.Du coup il récupère déjà toutes les fonctionnalités de listing de ce controller. Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 6, 2015 Author Share Posted August 6, 2015 Bonjour, merci pour votre réponse mais je suis un peu perdu, pouvez-vous me consacrer un peu de votre temps pour faire un exemple svp. la fonction que je veux récupérer est celle qui affiche un tableau avec la liste des clients. je vous remercie d'avance Link to comment Share on other sites More sharing options...
herve25 Posted August 6, 2015 Share Posted August 6, 2015 Si tu souhaites uniquement utiliser la liste sinon tu peux te baser sur la documentation.La page des helpersList http://doc.prestashop.com/display/PS15/HelperList explique bien comment cela fonctionne. Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 6, 2015 Author Share Posted August 6, 2015 Salut, j'ai suivi le tuto sur le lien que vous avez mis, mais ça ne m'affiche toujours pas le tableau qui contient la liste des clients, ça ne m'affiche même pas de tableau comme dans l'exemple du lien. bref ça ne m'affiche rien du tout. le temps passe et je n'avance toujours pas, je suis toujours stréssé et je dois remettre mon application dans une semaine. svp jsi vous pouvez faire un exemple et des captures d'écran pour me montrer. Je vous remercie d'avance. Link to comment Share on other sites More sharing options...
herve25 Posted August 6, 2015 Share Posted August 6, 2015 Bon je t'ai fait un exemple rapide de ma première proposition ( surcharge du controller AdminCustomersController. )Voici un module squelette qui fait un peu près ce que tu veux ( ultra basique car fait en 5 min, mais fonctionel ) Ce module est à créer dans modules/testmodule/ testmodule.php <?php class testmodule extends Module { public function __construct() { $this->author = 'testmodule'; $this->name = 'testmodule'; $this->tab = 'testmodule'; $this->version = '0.1.0'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Prestashop Module'); $this->description = $this->l('Personalise description with description module'); } /** * Installation du module */ public function install() { if ( !parent::install()) return false; //Création d'une tab prestashop ( nécessaire pour le controller back office ) $tab = new Tab(); $tab->class_name = 'customer'; //Nom du controller Admin du module $tab->module = $this->name; $languages = Language::getLanguages(); foreach ($languages as $lang) { $tab->name[$lang['id_lang']] = 'PersonnalCustomers'; } try { $tab->save(); } catch (Exception $e) { echo $e->getMessage(); return false; } return true; } /** * Désinstalation du module */ public function uninstall() { return parent::uninstall(); } /** * Configuration du module */ public function getContent() { $content = '<a href="'.$this->context->link->getAdminLink('customer').'">Acces clients perso</a>'; return $content; } } controllers/admin/customer.php <?php /** * Controller Admin du module qui surcharge le controller prestashop standard */ class customerController extends AdminCustomersController { /** * Remise en place des surcharges modules */ public function __construct() { parent::__construct(); } /** * Surcharge token car problème de sécurité * (Corriger ce point) */ public function checkToken() { $token = Tools::getValue('token'); return (!empty($token) && $token === $this->token); } } ?> Après c'est à toi d'adapter cela à tes besoins. Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 6, 2015 Author Share Posted August 6, 2015 j'ai adapté mais on me dit contrôlleur introuvable lorsque je clique sur le lien <accès perso> Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 6, 2015 Author Share Posted August 6, 2015 Désolé j'ai réessayé et ça fonction, ça me redirige vers l'onglet client qui affiche la liste des clients. merci mais c'est pas vraiment ce que je veux, ce que je veux c'est que la liste des clients s'affcihe dans mon module et que lorsqu'on je choisis un client, j'ai ses informations car à partir sur informations j'ai des modificatons à faire , c'est pour cette raison que je veux pas que ça me redirige . Link to comment Share on other sites More sharing options...
herve25 Posted August 7, 2015 Share Posted August 7, 2015 A toi de surcharger les méthodes nécessaires pour que cela fasse ce que tu veux si tu veux te baser sur ce controller.Sinon comme évoqué plus haut les helperLists / HelperForm sont fait pour ça.Et au pire si tu ne parviens pas à appréhender leur fonctionnement, reste toujours l'option de tout coder tout à la main. Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 7, 2015 Author Share Posted August 7, 2015 Bonjour, je te remercie HERVE25 pour ta disponibilité. j'ai opté pour l'une de tes solutions en utilisant la helperList. voici ma fonction public function renderList(){ { $sql = 'SELECT * FROM '._DB_PREFIX_.'customer'; if($result = Db::getInstance()->executeS($sql)){ $this->fields_list = array( 'id_customer' => array( 'title' => $this->l('Id'), 'width' => 140, 'type' => 'text', ), 'firstname' => array( 'title' => $this->l('Name'), 'width' => 140, 'type' => 'text', ), ); $helper = new HelperList(); $helper->shopLinkType = ''; $helper->simple_header = true; // Actions to be displayed in the "Actions" column $helper->actions = array('edit', 'delete', 'view'); $helper->identifier = 'id_customer'; $helper->show_toolbar = true; $helper->title = 'HelperList'; $helper->table = $this->firstname.'_customer'; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->firstname; return $helper->generateList($result, $this->field_list); } return false; } et voici ma fonction du getContent(): public function getContent() { $this->_html = ''; if (Tools::isSubmit('btnSubmit')) { $this->_postValidation(); if (!count($this->_postErrors)) $this->_postProcess(); else foreach ($this->_postErrors as $err) $this->_html .= $this->displayError($err); } $this->_html .= $this->_displayRecharge(); $this->_html .= $this->renderForm(); $this->_html .= $this->renderList(); return $this->_html; } ça m'affiche un tableau comme celui des helperList sauf que l'intérieur du tableau est vide, il n'ya pas de clients. je sais pas où est l'erreur, pouvez-vous m'aider svp? Link to comment Share on other sites More sharing options...
herve25 Posted August 7, 2015 Share Posted August 7, 2015 Voici un code fonctionnel qui gère déjà la base. Affichage du listing des clients Affichage du formulaire d'édition. /** * Configuration du module */ public function getContent() { //Affichage du détails d'un client if (Tools::getIsset('viewcustomer')) { $this->_html .= $this->_displayCustomer(); } else if (Tools::getIsset('updatecustomer')) { $this->_html .= $this->_updateCustomer(); } //Suppression d'un client else if (Tools::getIsset('deletecustomer')) { $this->_html .= $this->_deleteCustomer(); } //Action par défaut affichage de la liste else { //Affichage de la liste des clients $this->_html .= $this->_renderList(); } return $this->_html; } /** * Affichage de la liste des clients */ private function _renderList() { $sql = 'SELECT * FROM '._DB_PREFIX_.'customer'; if ($result = Db::getInstance()->executeS($sql)) { //Les champs à afficher $fields_list = array( 'id_customer' => array( 'title' => $this->l('Id'), 'width' => 140, 'type' => 'text', ), 'firstname' => array( 'title' => $this->l('FirstName'), 'width' => 140, 'type' => 'text', ) ); $helper = new HelperList(); $helper->shopLinkType = ''; $helper->simple_header = false; $helper->actions = array('edit', 'delete', 'view'); $helper->identifier = 'id_customer'; $helper->show_toolbar = true; $helper->title = 'Listing client'; $helper->table = 'customer'; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name; return $helper->generateList($result, $fields_list); } return false; } /** * Affichage d'un client */ private function _displayCustomer() { } /** * Maj d'un client */ private function _updateCustomer() { //Nouvel objet client $customer = new Customer(Tools::getValue('id_customer')); $form_fields = array( 'form' => array( 'legend' => array('title' => $this->l('Edit customer'), 'icon' => 'icon-cogs'), 'description' => $this->l('Edit customer'), 'input' => array( array( 'type' => 'text', 'label' => $this->l('firstname'), 'name' => 'firstname', 'required' => true, ), array( 'type' => 'text', 'label' => $this->l('lastname'), 'name' => 'lastname', 'required' => true, ) ), 'submit' => array( 'title' => $this->l('Save'), 'class' => 'button btn btn-default pull-right', ) ), ); //Nouveau HelperFrom $helper = new HelperForm(); $helper->show_toolbar = false; $lang = new Language((int) Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $this->fields_form = array(); $helper->id = $customer->id; $helper->identifier = 'editCustomer'; $helper->submit_action = 'SubmitCustomer'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => array('firstname' => $customer->firstname, 'lastname' => $customer->lastname), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($form_fields)); } /** * Suppression d'un client */ private function _deleteCustomer() { } Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 7, 2015 Author Share Posted August 7, 2015 Merci hervé25 pout ta précieuse aide, le module est enfin fini. grâce à toi je vais pouvoir remettre l'application sans problème, encore merci pour ton aide. Link to comment Share on other sites More sharing options...
K.M.R72 Posted August 9, 2015 Author Share Posted August 9, 2015 Oups, pour la fonction _deleteCustomer(), elle ne fonctionne pas, j'arrive pas à supprimer un client. ET je voudrais aussi mettre dans la fonction _displayCustomer(), les informations du client. 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