wolfib Posted July 3, 2012 Share Posted July 3, 2012 Hello, Je fais appel à qui veut bien m'aider car je suis complètement perdu au niveau du développement d'un module avec la version 1.5 au niveau de l'admin. En front office, j'ai galéré, mais en prenant exemple sur d'autres modules (faute de doc...). Par contre, en backoffice c'est autre chose. En gros je stocke des éléments dans une base de données. J'ai réussi en créant un contrôleur à afficher la liste des éléments (avec la fonction _construct). Par contre, j'aimerais pouvoir voir les détails de mon contenu (à l'image du détail des commandes) en cliquant sur la ligne et les modifier. Et c'est là que ça déconne : en breadcrumb, il m'affiche "View". Je suppose qu'il faut surcharger une fonction. Mais laquelle et comment ??? Renderview ? Renderform ? J'ai regardé au niveau des contrôleurs admin des clients par exemple, et à chaque fois il y a un tpl view ou form dans un dossier helpers. Mais comment et où les mettre dans le dossier de mon module ? Un minimum de doc même au stade embryonnaire serait-il disponible quelque part ? Le seul module pour lequel j'ai trouvé un truc qui s'en rapprochait était blockcms, mais uniquement pour la page de configuration du module, ce qui m'intéresse peu... Toute aide est d'ores et déjà vivement remerciée par mes soins ! Wolfib Link to comment Share on other sites More sharing options...
mexique1 Posted July 4, 2012 Share Posted July 4, 2012 Hello, Tu trouveras toutes les infos sur cet article : http://www.prestarocket.com/blog/creer-module-mvc-prestashop-1-5/ A+ Link to comment Share on other sites More sharing options...
wolfib Posted July 4, 2012 Author Share Posted July 4, 2012 Hello, Merci pour ta réponse ! J'ai effectivement suivi ce tuto qui est super bien fait et m'a bien aidé au départ. Malheureusement il n'indique pas comment voir ou éditer un des éléments en backoffice (il explique "juste" comment avoir la liste des éléments). En fouillant dans le code au niveau du contrôleur des commandes, j'ai trouvé que c'est la fonction renderView qui permet d'afficher et d'éditer les éléments (renderForm a l'air de ne faire que de l'édition de champs). En gros, la fonction sert à assigner des variables smarty et à les envoyer au tpl. Problème : pour les commandes, le tpl se trouve dans /dossieradmin/themes/default/template/controllers/orders/helpers/view/view.tpl. Mais dans quel sous dossier de mon module dois-je mettre mon view.tpl ? J'ai essayé templates/helpers/view/ mais ça ne marche pas. Une piste ? @+ Link to comment Share on other sites More sharing options...
wolfib Posted July 4, 2012 Author Share Posted July 4, 2012 Après avoir détricoté un certain nombre de classes et de contrôleurs (c'était chouette...), j'ai à priori la solution à mon problème. Le fichier view.tpl qui permet d'afficher ou d'éditer un élément de module au niveau du backoffice (fonction renderView du contrôleur) doit se trouver dans le dossier suivant (à partir du dossier module) : /views/templates/admin/nomdelaclasseagerer/helpers/view/view.tpl La solution était relativement simple quand on la connaît mais faute de doc ou d'exemple, énormément de temps perdu... Dommage... 2 Link to comment Share on other sites More sharing options...
mexique1 Posted July 5, 2012 Share Posted July 5, 2012 Merci, je suis l'auteur de l'article Effectivement, dedans j'explique seulement comment utiliser le ViewHelper pour afficher une liste, vu que l'ajout d'un modèle est géré par le front office. En fait dans l'admin, tout est "cloisonné" dans les ViewHelpers, mais tu n'es pas obligé de les utiliser. Tu peux aussi créer un fichier "content.tpl", qui sera la vue par défaut, et mettre ce que tu veux dedans. Peut-être le sujet d'un future article 1 Link to comment Share on other sites More sharing options...
wolfib Posted July 5, 2012 Author Share Posted July 5, 2012 Je ne savais pas que tu étais l'auteur de cet article, mais félicitations. Pour l'instant, c'est tout simplement la seule ressource que j'ai trouvé pour expliquer le modèle MVC sous Prestashop 1.5. Où as-tu trouvé ces infos pour faire ton tuto ? Tu as dû tout détricoter comme j'ai dû le faire ? Il est clair que ce nouveau modèle est beaucoup plus propre que le précédent pour le développement des modules, mais quelle galère pour convertir les projets... Merci en tous cas. @+ Link to comment Share on other sites More sharing options...
BigZ Posted October 3, 2012 Share Posted October 3, 2012 j'ai du pas mal chercher pour résoudre un problème qui me semble similaire : ayant besoin de champs sortant des cas traités par les helpers dans mon formulaire, j'ai trouvé un hook qui me permet d'ajouter des types de champs. à l'installation du module, ou le nom de la classe est MyClass : private function _createHook() { // Create Hook $captain = new Hook(); $captain->name = 'displayMyClassForm'; $captain->title = 'my Title'; $captain->description = 'My Description'; if (!$captain->add()) return false; if (!$this->registerHook($this->hookName)) return false; return true; } Cheers Link to comment Share on other sites More sharing options...
J. Danse Posted October 3, 2012 Share Posted October 3, 2012 A quoi sert ce bout de code ?! Je suis pas sur de comprendre... (l'utilité, du moins). Link to comment Share on other sites More sharing options...
BigZ Posted October 10, 2012 Share Posted October 10, 2012 hello, dans /admin/themes/default/templates/helpers/form/form.tpl se situe le bout de code suivant {if isset($name_controller)} {capture name=hookName assign=hookName}display{$name_controller|ucfirst}Form{/capture} {hook h=$hookName} qui permet d'ajouter dynamiquement du contenu à la page de formulaire d'administration générée dynamiquement par les helpers, par exemple dans le cas de champs dont le type n'est pas pris en compte par le helper en question il suffit donc de créer une fonction HookdisplayMyClassForm($params) et d'enregistrer ce hook en DB grace au code fourni ci dessus à titre d'exemple, la fonction hook que j'utilise // add fields wich aren't treated by normal helpers public function HookDisplayProductCardForm($params) { $this->special_fields = array( array( 'type' => 'multiple_select', 'label' => $this->l('Feature Groups:'), 'name' => 'ids_features_groups', 'options' => array( 'query' => FeatureGroup::getSimpleFeatureGroups($this->context->language->id), 'id' => 'id_feature_group', 'name' => 'name' ), 'required' => false ) ); // assign values $product_card = new ProductCard(Tools::getValue('id_product_card', NULL)); $this->smarty->assign(array( 'special_fields' => $this->special_fields, 'feature_groups' => explode(';', $product_card->ids_features_groups) )); return $this->display(__FILE__, 'views/templates/admin/product-card.tpl'); } Link to comment Share on other sites More sharing options...
Zulian Posted November 6, 2012 Share Posted November 6, 2012 Bonjour, Je cherche à utiliser un tpl pour la vue back-office d'un module mais je ne trouve pas comment faire.. Par ailleurs, y-a-t il un endroit où l'on peut trouver de la doc sur les helpers pour pouvoir tous les utiliser ? Merci Link to comment Share on other sites More sharing options...
wolfib Posted November 6, 2012 Author Share Posted November 6, 2012 Hello, La seule chose que je peux te dire c'est "bon courage" ! C'est la grosse galère. Y a zéro doc (celle dispo sur le guide est pour la 1.4 donc inutilisable). J'arrive peu ou prou à m'en sortir en détricotant toutes les classes, ce qui n'est pas chose aisée. J'avais donné plus haut la hiérarchie pour utiliser view.tpl ou form.tpl. Ben j'ai perdu une demie journée simplement parce que si la classe est du genre NomDeMaClasse, il faut ajouter des underscores entre chaque mot, soit nom_de_ma_classe. Ravi d'avoir perdu une demie journée pour quelque chose qu'il était difficile d'imaginer. Idem aujourd'hui, je voulais simplement avoir une classe avec des données stockées en base, et un formulaire d'ajout et de modification, dont un avec une image. J'ai passé la journée à comprendre à peu près comment ça marche en regardant les contrôleurs des statuts de commande ou encore celui des transporteurs. Très pratique ! C'est vraiment dommage parce que le modèle MVC est vraiment top. C'est un sacré gain de temps et une meilleure organisation. Mais sans doc, c'est l'enfer ! Link to comment Share on other sites More sharing options...
Prestaspirit Posted November 7, 2012 Share Posted November 7, 2012 Bonjour, Je cherche à utiliser un tpl pour la vue back-office d'un module mais je ne trouve pas comment faire.. Par ailleurs, y-a-t il un endroit où l'on peut trouver de la doc sur les helpers pour pouvoir tous les utiliser ? Merci J'utilise jamais Dreamweaver mais ça fonction recherche par dossiers est tout de même bien utile pour découvrir cette nouvelle version. Pour utiliser les tpl avec les controller admin il faut créer des dossier dans ton module views/templates/admin/NOM_DU_CONTROLLER/helpers/ NOM_DU_CONTROLLER équivaut au nom de ton controller admin sans le suffixe admin, exemple pour un controller moduleAdmin NOM_DU_CONTROLLER = module De là tu peut mettre plusieurs dossiers selon l'affichage que tu souhaite modifier (form, list, view), une petite visite dans le dossier controllers du theme admin t'aideras à trouver ce que tu cherche. Franck Link to comment Share on other sites More sharing options...
manulito Posted November 19, 2012 Share Posted November 19, 2012 Bonjour, j'ai créé un module qui reprend entre autre la liste des commandes, toute la liste s'affiche bien, mon problème est lorsque je veux voir le détail d'une commande, au lieu de passer en paramètre l'id_order, il mets un id_orders sans valeur sorti de je ne sais où... du coup, erreur sur la page de détail, mais si je modifie dans l'url le ..&id_orders=&... par ...&id_order=1234&..., alors le détail de la commande 1234 s'affiche bien. le problème vient donc du lien généré pour voir le détail. j'ai fait la meme chose avec les clients, et la pas de problème pour voir ou éditer une fiche. quelqu'un aurait une idée d'ou peut venir le problème? merci d'avance Link to comment Share on other sites More sharing options...
Prestaspirit Posted November 19, 2012 Share Posted November 19, 2012 Salut manulito, Tu as certainement mis id_orders quelques part, dans ton model par exemple? Link to comment Share on other sites More sharing options...
manulito Posted November 19, 2012 Share Posted November 19, 2012 je me suis dis pareil, j'ai fait une recherche avec dreamweaver de id_orders sur tout le dossier prestashop, et aucun résultat... Link to comment Share on other sites More sharing options...
alesx Posted November 27, 2012 Share Posted November 27, 2012 Salut, qu'elle galère en effet, je viens enfin d'afficher la vue du détail des commandes pour mon module, après 4h d'analyse des classes de Presta... Depuis le départ la doc de Presta est super pauvre au niveau dev, et c'est vraiment nul... Personnellement je n'ai pas de soucis pour le lien généré qui permet d'afficher le détail d'une commande. Pour info j'ai créer un fichier "AdminNomDuModule.php" qui étend donc la classe "ModuleAdminController". A l'intérieur j'y ai collé le code du fichier "AdminOrdersController.php" et pour l'instant la ligne "return $this->createTemplate('_print_pdf_icon.tpl')->fetch();" de la fonction "printPDFIcons()" est commentée car sinon j'avais une erreur de template. Manulito en espérant que cela puisse t'aider.. Link to comment Share on other sites More sharing options...
loicCSL Posted December 13, 2012 Share Posted December 13, 2012 Tu peux aussi créer un fichier "content.tpl", qui sera la vue par défaut, et mettre ce que tu veux dedans. Peut-être le sujet d'un future article Bonjour mexique1, Ce fichier content.tpl m’intéresse beaucoup mais je n'arrive pas à m'en servir. Déjà je ne sais pas ou le placer, j'ai essayé un peu partout dans mon module mais rien à faire ! nom du module : C2SContrat nom de ma classe admin : AdminC2SCategoryController.php emplacement du content.tpl : modules/C2SContrat/views/templates/admin/C2SCategory/ ? modules/C2SContrat/views/templates/admin/C2S_Category/ ? modules/C2SContrat/views/templates/admin/C2S_Category_Controller/ ? dans un dossier helpers ? Merci de ton aide. 1 Link to comment Share on other sites More sharing options...
vmulot Posted March 11, 2013 Share Posted March 11, 2013 Hello, je me permet de réagir aussi sur ce sujet, car je rencontre le même type de difficulté: à savoir, j'ai mon dossier "monmodule", avec un controller AdminMonModuleController.php (avec la méthode renderForm), et un model MonModuleModel.php j'aimerais ajouter 2,3 trucs dans le formulaire généré, j'ai donc créé dans le dossier views du module : templates/admin/monmodule/helpers/form/form.tpl pour pouvoir y ajouter des choses, dans mon cas un simple texte ne s'affiche pas. j'ai le doute sur le nom du dossier, car j'ai lu plusieurs choses : j'ai testé : - templates/admin/mon_module/.... - templates/admin/monModule/... - templates/admin/MonModule/... - templates/admin/mon_module_model/ ... etc etc mais rien n'y fait, pourtant de ce que j'ai compris c'est bien le nom du controller qu'il faut utiliser. Auriez vous une piste ? Par avance merci Link to comment Share on other sites More sharing options...
alesx Posted March 11, 2013 Share Posted March 11, 2013 Je ne sais pas si je vais pouvoir t'aider plus, mais déjà c'est le premier nommage qu'il faut utiliser, chez moi en tout cas c'est comme ça : - templates/admin/mon_module/.... Link to comment Share on other sites More sharing options...
vmulot Posted March 11, 2013 Share Posted March 11, 2013 (edited) c'est déjà une piste, je vais re tester demain merci ! Edit : cela ne marche toujours pas je capte plus ! c'était dans le but de faire un peu d'ajax (peuplé un Select en fonction du choix d'un autre select) Edited March 12, 2013 by vmulot (see edit history) Link to comment Share on other sites More sharing options...
vmulot Posted March 12, 2013 Share Posted March 12, 2013 (edited) J'ai echo le path recherché dans la méthode createTemplate du fichier Helper.php, il m'indique bien : modules/monmodule/views/templates/admin/mon_module/helpers/form/form.tpl donc mon path est bon, maintenant faut trouver prquoi ca override pas indice : si je garde ça {extends file="helpers/form/form.tpl"} cela ne passe pas, mes ajouts ne st pas pris enc ompte, si je l'enleve il override bien Edited March 12, 2013 by vmulot (see edit history) Link to comment Share on other sites More sharing options...
mdiblasio Posted March 12, 2013 Share Posted March 12, 2013 (edited) La ligne d'extends plante peut-être smarty lorsqu'elle est exécutée car tu l'as conservée à l'identique. Le chemin vers "helpers/form/form.tpl" n'est pas le même depuis le dossier de ton module que depuis le dossier thème de l'administration. Corrige le path (voit pour utiliser les variables smarty de prestashop tel que le chemin vers admin, puis rajoute ce qui manque) et ça devrait fonctionner ;-) Edited March 12, 2013 by mdiblasio (see edit history) Link to comment Share on other sites More sharing options...
manulito Posted March 21, 2013 Share Posted March 21, 2013 Bonjour, petite question à laquelle je ne trouve pas de réponse sur le net, j'aimerai dans l'admin avoir un module qui regroupe le formulaire de création de compte et celui de création d'adresse, comme pour le front office. j'ai bien réussi à avoir la copie du formulaire compte client qui s'affiche par mon module, mais comment y intégrer le formulaire adresse? j'ai essayé de reprendre les champs du formulaire adresse que j'ai mis dans le renderform() de mon controller adminclients.php, le formulaire a bien maintenant les champs d'adresse, mais le problème est pour l'enregistrement. sachant que dans le models est défini la table, qui est customer, et la je dois toucher 2 tables, customer et address. donc 2 models? je suis un peu perdu. si quelqu'un a une idée ou une piste, elle sera la bienvenue ^^ merci d'avance Manu Link to comment Share on other sites More sharing options...
indesign47 Posted April 8, 2013 Share Posted April 8, 2013 (edited) Bonjour à tous, J'essaye de réaliser un module partant du Controller Admin AdminImportController.php Ceci afin d'ajouter de nouvelles options d'import csv. Deux bémols : Le fichier file.button.tpl.php (1 Ko) n'est pas généré dans le dossier cache (cache/smarty/compile)L'icone d'aide ne s'affiche pas dans les deux fenêtres.J'ai rajouté dans mon module l'arborescence template/helpers/help_access et le fichier button.tpl . Sans succès. Les sept entités contenu dans l'AdminImportController.php du Core affichent correctement les champs disponibles (availableFields). Lors de la sélection du type d'entités (une des miennes : ex alias) les champs disponibles dans la Form à droite ne sont pas mise à jour. Les champs disponibles affichés sont ceux de la dernière sélection d'entités d'origine de Prestashop.Lien avec le fichier AdminImportController.php pour l'affichage des champs disponibles et non avec le fichierAdminImportcsvController.php de mon module ? Edit ajout de l'extrait Form.tpl <script type="text/javascript"> $("select#entity").change( function() { $("#entitie").html($("#entity > option:selected").text().toLowerCase()); $.ajax({ url: 'ajax.php', data: { getAvailableFields:1, entity: $("#entity").val() }, dataType: 'json', success: function(j) { var fields = ""; $("#availableFields").empty(); for (var i = 0; i < j.length; i++) fields += j[i].field; $("#availableFields").html(fields); activeClueTip(); }, error: function(j) { } }); }); </script> Indesign Merci par avance, Edited April 8, 2013 by indesign (see edit history) Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 9, 2013 Share Posted April 9, 2013 Bonjour à tous, Ce sujet est super intéressant ! Car il est vrai qu'il n'y a aucune doc sur le MVC en admin. J'ai moi meme un probleme avec le bouton de creation que j'aimerais désactiver. J'ai deja creer un autre sujet pour cette question : http://www.prestashop.com/forums/topic/238252-controller-admin-module-desactiver-la-creation/ Merci d'avance pour votre aide. Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Share Posted April 17, 2013 Je reviens à la charge... Quelqu'un sait comment ne pas afficher le bouton de création d'un objet dans la barre d'outil ? Link to comment Share on other sites More sharing options...
mdiblasio Posted April 17, 2013 Share Posted April 17, 2013 Je reviens à la charge... Quelqu'un sait comment ne pas afficher le bouton de création d'un objet dans la barre d'outil ? J'ai une solution, fonctionnelle pour moi, tant qu'il ne s'agit que du bouton et non d'interdire la création. A chaque fois que ça a été nécessaire pour moi, je surchargeais déjà le controller. J'ai donc simplement surchargé la méthode initToolbar comme suit pour retirer le bouton "Ajouter". public function initToolbar(){ parent::initToolbar(); // Remove "Add" button from toolbar unset($this->toolbar_btn['new']); } Maintenant, si tu veux en plus interdire la création, je pense qu'il faut jouer avec les permissions des groupes d'utilisateur, dans Administrations->Permissions, tout simplement. 1 Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Share Posted April 17, 2013 Salut mdiblasio, Merci beaucoup pour ta réponse. Ça fonctionne nickel ! Merci, merci et merci !!! Pour info, si tu veux interdire l'acces à la page de création, ajoutes cette ligne dans ton constructeur $this->tabAccess['add'] = false; Link to comment Share on other sites More sharing options...
mdiblasio Posted April 18, 2013 Share Posted April 18, 2013 Salut mdiblasio, Merci beaucoup pour ta réponse. Ça fonctionne nickel ! Merci, merci et merci !!! Pour info, si tu veux interdire l'acces à la page de création, ajoutes cette ligne dans ton constructeur $this->tabAccess['add'] = false; C'est bon à savoir, merci pour le complément d'information ! Cela interdit-il complètement la possibilité de créer un objet via ce controller, ou "simplement" l'accès à la page de création (pointée par le bouton de la toolbar) ? Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 18, 2013 Share Posted April 18, 2013 Je ne suis pas a 100% sur que ca bloque l'enregistrement de données dans le cas ou un "faux formulaire" (vu que le formulaire ne peut apparaitre vu que cette propriété en bloque l'apparition) serait posté d'une manière farfelue. Personnellement je trouve que le risque est faible et pour moi le plus important est que ce formulaire n'apparaisse pas même en trafiquant l'URL. 1 Link to comment Share on other sites More sharing options...
mdiblasio Posted April 19, 2013 Share Posted April 19, 2013 A voir le code d'AdminController, il semblerait que seule la vue soit impactée par les données de ce tableau. Mais c'est toujours pratique puisque, comme tu le dis toi-même, l'accès à ses pages demande déjà d'être un utilisateur authentifié. Le risque d'envoie d'une requête HTTP POST sans passer par le formulaire est relativement faible, en fonction de la taille du site et du nombre de personnes ayant accès au backend. Merci, donc, pour cette remontée d'information ! 1 Link to comment Share on other sites More sharing options...
jeckyl Posted April 21, 2013 Share Posted April 21, 2013 Bonjour, quelqu'un a déjà trouvé un module Prestashop de base dans la 1.5 qui respecte les nouvelles structures de développement ? Link to comment Share on other sites More sharing options...
J. Danse Posted April 21, 2013 Share Posted April 21, 2013 Joker ? ;-) Je pense qu'il n'y en a strictement aucun, en réalité. Certains implémentent des bribes de temps à autre, chacun des différentes. Mieux encore, qu'est-ce que l'on peut définir comme structure de développement ? L’arborescence des fichiers ? Si on s'en tiens là, on répondre à la question juste avant. Sinon, on en est encore très loin. Link to comment Share on other sites More sharing options...
jeckyl Posted April 21, 2013 Share Posted April 21, 2013 Peut on m'expliquer alors pourquoi essayer de respecter ces nouvelles règles si Prestashop n'est déjà pas capable de le faire ? 1 Link to comment Share on other sites More sharing options...
J. Danse Posted April 21, 2013 Share Posted April 21, 2013 Parce que... Non ça va, j'essaie même pas: je n'ai aucun argument pour ! Au même titre que pour les "Coding standard". Après, il est vrai que je suis le premier partisan de la nouvelle structure (au sens strict du terme en terme d’arborescence) et de l'utilisation des HelperFom ainsi que d'un éventuel tpl pour la méthode getContent() d'un module. Mes seuls arguments ne sont pas le fait que ce soit recommandés par PrestaShop: c'est juste que je m'y retrouve et que me permet plus de choses aisément ! 2 Link to comment Share on other sites More sharing options...
TechDelavente Posted June 14, 2013 Share Posted June 14, 2013 (edited) Post très intéressant, qui m'as pas mal aidée. Mais m'as aussi perdu. Et d'ailleurs je viens poser mon soucis ou solution ? Bref. J'ai développe un module qui s'adapte a la partie Commande du BO : Censé être le controlleur : AdminOrdersController.php Cependant lors de la surcharge de celui - ci pour rajouter mon bouton qui me permettra d'appeler mon code, tout les autres boutons disparaissent . . (CREATE en particulier). Étrange surtout qu'a aucun moment je n'ai "détruit le bouton" . Bref je viens confirmer. Sans doc, se balader partout comme ca c'est bien la galère. Autre question rapide : Un seul controlleur gère la liste des commandes et le détail des commandes ? .. J'ai trouve : $res = parent::initToolbar(); if (Context::getContext()->shop->getContext() != Shop::CONTEXT_SHOP && isse\ t($this->toolbar_btn['new']) && Shop::isFeatureActive()) unset($this->toolbar_btn['new']); return $res; il suffit de retourner notre function initToolbar(). Cependant il est vrai que des qu'on souhaite utiliser notre controlleur pour executer nos templates ca devient moins facile :/ On s'y perds vite avec tout ca. Edited June 14, 2013 by TechDelavente (see edit history) Link to comment Share on other sites More sharing options...
manulito Posted July 23, 2013 Share Posted July 23, 2013 Bonjour, j'ai un problème de traduction des entetes des colonnes de la liste des clients, par mon module qui reprend l'affichage d'origine des clients. l'affichage est nikel, les traductions de la vue de chaque client est bien traduit. il ne me manque que les titres des colonnes... si quelqu'un a une idée.. j'ai beau chercher sur la forge, sur le forum, mais rien n'a marché pour le moment... Merci d'avance Link to comment Share on other sites More sharing options...
Matt75 Posted July 23, 2013 Share Posted July 23, 2013 Salut, Tu pourrais donner ta méthode renderList qu'on y jette un oeil ? A+ Link to comment Share on other sites More sharing options...
manulito Posted July 24, 2013 Share Posted July 24, 2013 Salut, Tu pourrais donner ta méthode renderList qu'on y jette un oeil ? A+ bonjour, merci de vous interesser à mon problème, je l'avais reprise dans les fichiers de l'admin,voici le code: (j'ai fais un essai de traduction en passant par $module->l('First Name') à la place de $this->l('First Name'), comme dans certains modules, mais ca n'a rien changé..) public function renderList() { $module = new mwdconcessionnaires(); $this->addRowAction('view'); $genders = array(); $genders_icon = array('default' => 'unknown.gif'); foreach (Gender::getGenders() as $gender) { $gender_file = '../genders/'.$gender->id.'.jpg'; if (file_exists(_PS_IMG_DIR_.$gender_file)) $genders_icon[$gender->id] = '../'.$gender_file ; else $genders_icon[$gender->id] = $gender->name.'.jpg'; $genders[$gender->id] = $gender->name.'.jpg'; } $this->_select = 'a.*, a.id_employee as idEmployee, a.id_customer as idCustomer, a.id_customer as idCustomerAdd, a.id_customer as idCustomerOrd, gl.`name` AS Cname, ad.id_address AS id_address, ad.phone AS phone, ad.phone_mobile AS phone_mobile'; $this->_join = ' LEFT JOIN `'._DB_PREFIX_.'address` ad ON (ad.`id_customer` = a.`id_customer`) LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_customer` = a.`id_customer`) LEFT JOIN `'._DB_PREFIX_.'customer_group` cg ON (cg.`id_customer` = a.`id_customer`) LEFT JOIN `'._DB_PREFIX_.'group_lang` gl ON (gl.`id_group` = cg.`id_group` AND gl.`id_lang` = '.$id_lang = (int)Context::getContext()->language->id.') '; $this->_where = 'AND cg.`id_group` NOT LIKE 1 AND cg.`id_group` NOT LIKE 37 AND cg.`id_group` NOT LIKE 38 AND cg.`id_group` NOT LIKE 43 AND cg.`id_group` NOT LIKE 44';/**/ if($this->context->employee->id){ $idEmployee = $this->context->employee->id; $employeeGroup = Db::getInstance()->getValue(' SELECT `concession` FROM `'._DB_PREFIX_.'employee` WHERE `id_employee` LIKE '.(int)$idEmployee); $this->_where .= ' AND gl.`name` LIKE \''.$employeeGroup.'\''; } $this->_where .= ' GROUP BY id_customer'; $this->_orderBy = 'Cname'; $this->_orderWay = 'ASC'; $this->fields_list = array( 'id_customer' => array( 'title' => $this->module->l('ID') ), 'id_gender' => array( 'title' => $this->l('#'), 'width' => 50, 'align' => 'center', 'icon' => $genders_icon, 'orderby' => false, 'type' => 'select', 'list' => $genders, 'filter_key' => 'a!id_gender', ), 'firstname' => array( 'title' => $module->l('First Name'), 'havingFilter' => true ), 'lastname' => array( 'title' => $this->l('Last Name'), 'havingFilter' => true ), 'email' => array( 'title' => $this->l('Email') ), 'phone' => array( 'title' => $this->l('Phone') ), 'phone_mobile' => array( 'title' => $this->l('Mobile') ), 'idCustomerOrd' => array( 'title' => $this->l('Nb Orders'), 'callback' => 'getCustomerNbOrders', 'orderby' => false, 'search' => false ), 'id_address' => array( 'title' => $this->l('Address?'), 'width' => 70, 'align' => 'center', 'type' => 'bool', 'callback' => 'printAddressIcon', 'orderby' => true, 'filter_key' => 'id_address' ), 'newsletter' => array( 'title' => $this->l('News.'), 'width' => 70, 'align' => 'center', 'type' => 'bool', 'callback' => 'printNewsIcon', 'orderby' => true ), 'optin' => array( 'title' => $this->l('Opt.'), 'width' => 70, 'align' => 'center', 'type' => 'bool', 'callback' => 'printOptinIcon', 'orderby' => true ), 'catalogreceived' => array( 'title' => $this->l('Catalog received'), 'width' => 70, 'align' => 'center', 'type' => 'bool', 'callback' => 'printCatalogIcon', 'orderby' => false ), 'idEmployee' => array( 'title' => $this->l('Account creator'), 'callback' => 'getEmployeeName' ), 'Cname' => array( 'title' => $this->l('Concession') ), 'active' => array( 'title' => $this->l('Active'), 'active' => 'status' ) ); $lists = parent::renderList(); // Check if we can add a customer /*if (Shop::isFeatureActive() && (Shop::getContext() == Shop::CONTEXT_ALL || Shop::getContext() == Shop::CONTEXT_GROUP)) $this->can_add_customer = false; */ $this->can_add_customer = true; parent::initToolbar(); $html = ''; if (Tools::getValue('export')) $this->csvExport(array('layers' => 2, 'type' => 'line', 'option' => '1')); $html .= ' <p><a class="button export-csv" href="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'&export=1&exportType=1"><span>'.$this->l('CSV Export').'</span></a></p>'; $this->content=$html; return $lists; } Link to comment Share on other sites More sharing options...
Matt75 Posted July 24, 2013 Share Posted July 24, 2013 Salut, Bon déjà si tu te bases sur le Canvas de module sache que la méthode renderList est fausse, car $this->fields_list doit être déclaré dans le constructeur (Regarde les AdminController de base) car si tu regardes le fonctionnement de la class AdminController, tu verras que cette variable est utilisée par d'autres méthodes que renderList et si tu ne la déclares pas dans le constructeur ces méthodes ne pourront pas fonctionner. Cela s'applique aux autres propriétés déclarées dans ta méthode renderList, normalement tu n'as pas besoin de surcharger cette méthode, tout ce qui est affectation de variable doit être fait dans le constructeur. Personnellement j'ai terminé un module hier pour un client en utilisant un ModuleAdminController et je n'ai pas eut de problème avec les traductions des champs de la renderList, je n'ai pas surchargé la méthode renderList et j'ai fais mes déclarations dans le constructeur en prenant exemple sur les AdminController de base. $module = new mwdconcessionnaires(); Cette ligne est inutile, le constructeur parent déclare déjà $this->module. Link to comment Share on other sites More sharing options...
serwol Posted April 25, 2014 Share Posted April 25, 2014 Bonjour, est ce que quelqu'un saurait comment désactiver le bouton qui affiche la liste des modules dans la toolbar, j'ai testé le code suivant dans la fonction initToolbar mais ça ne fonctionne pas : unset($this->toolbar_btn['modules-list']); Merci d'avance 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