Nicks Posted September 27, 2017 Share Posted September 27, 2017 Bonjour! **************************** Prestashop : 1.6.1.16 PHP: 5.6 **************************** J'ai besoin de personnaliser le slider de la homepage (modifier la couleur de fond en fonction du type de produit et d'autres modifications conditionnelles de ce genre...). Pour ce faire, j'ai décidé de modifier le module "homeslider" (j'ai en fait, dupliqué le module et renommé les fichiers, class etc... en ce sens, jusque-là pas de problème, ça fonctionne bien.) Ce que je souhaite faire, c'est ajouter un champ de type "select" dans l'admin, d'où je pourrai sélectionner une catégorie (une liste prédéfinie que je renseigne directement dans la class (homeslider.php)) pour ensuite utiliser ce nouveau champ en tant que classe css. Ma difficulté provient du fait que lorsque j'ajoute un nouveau champ de type "select", le formulaire ne génère pas les infos de langue : quelque-chose du type : <select name="category_1" id="category_1"> (mais : <select name="category" id="category"> HomeSlider.php array( 'type' => 'select', 'label' => $this->l('categorie'), 'name' => 'category', 'required' => true, 'lang' => true, 'options' => array( 'query' => $options = array( array( 'id_option' => 'toto', 'name' => 'toto' ), array( 'id_option' => 'tutu', 'name' => 'tutu' ), ), 'id' => 'id_option', 'name' => 'name' ) ), Du coup, erreur à la validation du form, pas d'enregistrement en bdd. J'ai contourné le problème, vu que mon site n'est qu'en FR, en renseignant directement l'id de la langue "en dur" dans le code. array( 'type' => 'select', 'label' => $this->l('categorie'), 'name' => 'category_1', 'required' => true, 'lang' => true, 'options' => array( 'query' => $options = array( array( 'id_option' => 'toto', 'name' => 'toto' ), array( 'id_option' => 'tutu', 'name' => 'tutu' ), ), 'id' => 'id_option', 'name' => 'name' ) ), Et également dans les boucles de $lang à plusieurs endroits dans le code. Du coup ca fonctionne. La catégorie est bien enregistrée dans la base, MAIS... dès que j'édite un slide, la catégorie n'est pas "selected", du coup, obligé de reséléctionner la bonne catégorie sans quoi j'update avec la première catégorie de la liste... J'ai testé en créant un champ de type "text" et là aucun problème, pas besoin de bidouiller, je peux garder toutes les variables de $lang dans le code et les valeurs existantes sont bien renseignées dans le champ lors de l'édition d'un slide. Ma question est donc : comment faire en sorte, dans mon cas, pour récupérer les valeurs existantes pour un champ select? Merci! Link to comment Share on other sites More sharing options...
Nicks Posted September 29, 2017 Author Share Posted September 29, 2017 J'avance un peu en regardant ce qu'il se passe au niveau du tpl : {extends file="helpers/form/form.tpl"} J'ai donc fait quelques tests depuis ce fichier pour voir comment ca se passe pour la valeur "selected" et je vois ca : {if $fields_value[$input.name] == $option[$input.options.id]} selected="selected" {/if} problème, si j'affiche les valeurs de ses deux variables j'ai ca : {$fields_value[$input.name]} => 1 // Je devrais avoir toto et surtout je ne vois pas du tout à quoi ce chiffre fait référence... {$option[$input.options.id]} => toto // Ok Link to comment Share on other sites More sharing options...
Nicks Posted September 29, 2017 Author Share Posted September 29, 2017 (edited) Bon en fait je m'étais un peu planté... La valeur correspondait à un autre champ ... Du coup l'erreur est : {$fields_value[$input.name]} => array Du coup dans homeSlider.php : $fields['category'] = Tools::getValue('category', $slide->category); si je fais un var_dump($fields['category']), j'obtiens :array(1) { [1]=> string(1) "1" } Donc j'imagine que je n'accède pas à la valeur car elle est dans un tableau? Comment faire pour accéder à la valeur name de ce tableau (si le problème est bien là)? Edited September 29, 2017 by Nicks (see edit history) 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