Charazad Posted December 28, 2015 Share Posted December 28, 2015 Bonjour a tous ! J’espère que j'ai bien décrit le titre du sujet !Mon problème est: Dans BO de mon module j'essaye de remplir un select depuis la table des catégories.Voilà mon code: - Fichier monmodule.php: public function getContent() { $sqlCats = array(); $sqlCats[] = 'SELECT pc.`id_category`, pcl.`name` FROM `'._DB_PREFIX_.'product` p, `'._DB_PREFIX_.'category_product` pc, `'._DB_PREFIX_.'category_lang` pcl WHERE pc.`id_product` = p.`id_product` AND pc.`id_category` = pcl.`id_category`;'; foreach ($sqlCatsQuery as $sqlCat) { if (Db::getInstance()->execute($sqlCats) == false) { return false; } } $this->context->smarty->assign('productCats',$sqlCats); ... - Fichier config.tpl: {assign var='productCats' value=$productCats} <div> <form action="" method="POST" class="form-group"> <p><input type="text" name="" id="" /></p> <p><input type="textarea" name="" id="" /></p> <p><input type="text" name="" id="" /></p> <div class="col-sm-4"> <div id="category_block"> <select> {foreach from=$productCats key=id_categoryProduct item=categoryProduct} <option value="{$id_categoryProduct}">{$categoryProduct}</option> </option> {/foreach} </select> ... Et voilà le résultat: Vos idées?Merci par avance ! Link to comment Share on other sites More sharing options...
coeos.pro Posted December 28, 2015 Share Posted December 28, 2015 essaye avec public function getContent() { $sql= 'SELECT pc.`id_category`, pcl.`name` FROM `'._DB_PREFIX_.'product` p, `'._DB_PREFIX_.'category_product` pc, `'._DB_PREFIX_.'category_lang` pcl WHERE pc.`id_product` = p.`id_product` AND pc.`id_category` = pcl.`id_category`;'; $cats = Db::getInstance()->execute($sql); $this->context->smarty->assign('productCats',$cats); dans ton exemple sqlCats est l'array que tu définis avec juste la requete SQL, mais tu n'envoi pas le résultat de cette requète (Db::getInstance()->execute...) Link to comment Share on other sites More sharing options...
Charazad Posted January 4, 2016 Author Share Posted January 4, 2016 Merci ça marche mais j'ai essayé avec une simple requête select * from nom_de_la_table et il m'affiche juste des Array au combo !! Link to comment Share on other sites More sharing options...
coeos.pro Posted January 4, 2016 Share Posted January 4, 2016 Si tu regardes https://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/ tu verra que dans mon exemple cats contient un array, qui est envoyé dans le fichier tpl sous le nom productCats. Pour l'afficher il faut faire un foreach en smarty : http://www.smarty.net/docsv2/fr/language.function.foreach.tpl {foreach from=$productCats key=id_categoryProduct item=categoryProduct} <option value="{$id_categoryProduct}">{$categoryProduct}</option> {/foreach} d'ailleurs tu avais un </option> en trop dans ton premier message. Link to comment Share on other sites More sharing options...
BeRoots Posted September 14, 2016 Share Posted September 14, 2016 Est ce que quelqu'un serai me dire si l'on peut automatisé la construction du select via les helper de formulaire pour avoir génération du formulaire avec un select rempli ? Je présice que mon utilisation ce fera dans un module perso coté back office (appel de la methode $helper->generateForm(array($this->getConfigForm())); avec donc une définition du select via un array dans getConfigForm()) Merci d'avance Link to comment Share on other sites More sharing options...
Arnaud_69 Posted September 14, 2016 Share Posted September 14, 2016 (edited) Bonjour BeRoots, Tu seras obligé de passer par une boucle de toute façon pour générer ta liste, comme par exemple coeos.pro te le conseille via smarty. En plus, tu peux y gérer le selected si nécessaire (confort de l'utilisateur).Mais toi tu travailles visiblement que avec le helper ! J'ai trouvé ce lien : https://www.prestashop.com/forums/topic/313450-prestashop-16-helper-form-add-select-option/?p=1746440 et peut être que l'array() décrit dans $option pourrait te convenir. Edited September 14, 2016 by Arnaud_69 (see edit history) Link to comment Share on other sites More sharing options...
BeRoots Posted September 14, 2016 Share Posted September 14, 2016 merci 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