Jump to content

Checkbox Ne Se Décoche Pas


Recommended Posts

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" :D

 

J'ai du rater quelque chose mais je ne trouve pas :wacko:

Link to comment
Share on other sites

Je ne vois pas ce dont tu parles :wacko:

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 by Serial (see edit history)
Link to comment
Share on other sites

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...