Serial Posted January 11, 2016 Share Posted January 11, 2016 Bonjour, J'ai crée un nouveau champ dans ma base dans la table ps_product. C'est simplement une checkbox qui prend pour valeur 0 ou 1 (cochée ou décochée). Pour l'ajouter dans le BO, je suis aller dans la classe Product.php, ajouter mon champ dans la définition. Enfin pour l'afficher dans l'onglet "Prix", j'ai mis ce code là : <div class="form-group"> <div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="is_solde" type="default"}</span></div> <label class="control-label col-lg-2" for="is_solde"> </label> <div class="col-lg-9"> <div class="checkbox"> <label class="control-label" for="is_solde" > <input type="checkbox" name="is_solde" id="is_solde" {if $product->is_solde}checked="checked"{/if} value="1" /> {l s='Display the "sold" icon on the product page, and in the text found within the product listing.'} </label> </div> </div> </div> Après test, si je coche mon champ, ca met bien la valeur à 1 dans ma base. Par contre, dès que je décoche, la valeur ne se remet pas à zéro. Et pourtant, lors de l'enregistrement de la fiche produit, j'ai bien le message "Mise à jour réussie". Et ma case se "recoche" J'ai du rater quelque chose mais je ne trouve pas Link to comment Share on other sites More sharing options...
Eolia Posted January 11, 2016 Share Posted January 11, 2016 (edited) dans la classe product, vous avez prévu le cas où la checkbox est cochée, mais pas l'autre surement^^ la définition de cette propriété est à 0 par défaut ? Edited January 11, 2016 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
Serial Posted January 11, 2016 Author Share Posted January 11, 2016 Oui, dans ma classe Product.php j'ai bien en haut : public $is_solde = false; Link to comment Share on other sites More sharing options...
Eolia Posted January 11, 2016 Share Posted January 11, 2016 Ok et les lignes qui récupèrent la valeur de is_solde ? Link to comment Share on other sites More sharing options...
Serial Posted January 11, 2016 Author Share Posted January 11, 2016 (edited) Je ne vois pas ce dont tu parles Mes modifs concernant ce problème sont les suivants : BDD - Ajout de is_solde dans ps_product et ps_product_shop Product.php public $is_solde = false; 'is_solde' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), Prices.tpl <div class="form-group"> <div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="is_solde" type="default"}</span></div> <label class="control-label col-lg-2" for="is_solde"> </label> <div class="col-lg-9"> <div class="checkbox"> <label class="control-label" for="is_solde" > <input type="checkbox" name="is_solde" id="is_solde" {if $product->is_solde}checked="checked"{/if} value="1" /> {l s='Display the "sold" icon on the product page, and in the text found within the product listing.'} </label> </div> </div> </div> J'ai peut-être manqué une modif... Edited January 11, 2016 by Serial (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted January 11, 2016 Share Posted January 11, 2016 Vous devriez peut-être aller faire un tour du coté de AdminProductsController.php là où sont récupérées toutes les valeurs des champs. Vu que vous avez ajouté votre modif dans le tpl des prix, il serait bon dans le controlleur qui gère cette partie, de mettre juste avant $product->update(); le code qui récupère votre valeur, à savoir: $product->is_solde = Tools::getValue('is_solde'); Link to comment Share on other sites More sharing options...
Serial Posted January 11, 2016 Author Share Posted January 11, 2016 Vous devriez peut-être aller faire un tour du coté de AdminProductsController.php là où sont récupérées toutes les valeurs des champs. Vu que vous avez ajouté votre modif dans le tpl des prix, il serait bon dans le controlleur qui gère cette partie, de mettre juste avant $product->update(); le code qui récupère votre valeur, à savoir: $product->is_solde = Tools::getValue('is_solde'); La modification est similaire à la variable "on_sale". Du coup, si je regarde dans AdminProductsController.php, j'ai cette variable qui apparait deux fois : Dans cette méthode : public function initFormInformations($product) { array_push($product_props, 'price', 'wholesale_price', 'id_tax_rules_group', 'unit_price_ratio', 'on_sale', 'unity', 'minimum_quantity', 'additional_shipping_cost', 'available_now', 'available_later', 'available_date' ); } Et dans celle-ci : protected function copyFromPost(&$object, $table) { if ($this->isTabSubmitted('Prices')) $object->on_sale = (int)Tools::getValue('on_sale'); } Faut-il que j'ajoute plutôt en-dessous : $object->is_solde = (int)Tools::getValue('is_solde'); ? Link to comment Share on other sites More sharing options...
Eolia Posted January 11, 2016 Share Posted January 11, 2016 Vous ajoutez ,'is_solde' dans la 1ère et effectivement $object->is_solde = (int)Tools::getValue('is_solde'); dans la 2ème Link to comment Share on other sites More sharing options...
Serial Posted January 12, 2016 Author Share Posted January 12, 2016 Ca a l'air de fonctionner A quoi correspond ces 2 modifications ? Link to comment Share on other sites More sharing options...
Eolia Posted January 12, 2016 Share Posted January 12, 2016 Euh... vous vous y connaissez un peu en code ? La 1ère construit un tableau avec les propriétés de l'objet product, la deuxième récupère la valeur de la checkbox. Comprenez bien que si vous voulez enregistrer quelque chose, il faut bien récupérer sa valeur quelque part... Link to comment Share on other sites More sharing options...
Serial Posted January 12, 2016 Author Share Posted January 12, 2016 Oui. J'avais compris la deuxième mais pas la première 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