Akorn Posted September 21, 2012 Share Posted September 21, 2012 Bonjour, J'ai créé un nouveau champ (checkbox) dans mon objet "Produit" pour pouvoir différencier deux sortes de produits, produits grands public et produits réservés. Ces produits réservés ne seront commandables que par un groupe seulement d'internautes. J'ai donc ajouté ma nouvelle variable à ma classe surchargée "Product" qui étend "ProductCore" de la manière suivante : public $securized_product = false; Je l'ai aussi ajoutée à ma liste de "fields" dans la variable "definition" : 'active' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), 'securized_product' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), 'available_for_order' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), ------------------------------------------------------------------------------------------------------------------------ J'ai ensuite surchargé mon template "informations.tpl" pour ajouter mon champ dans la vue "Produits" en BackOffice : <td class="col-left"> {if isset($display_multishop_checkboxes) && $display_multishop_checkboxes} <div class="multishop_product_checkbox"> <ul class="listForm"> <li>{include file="controllers/products/multishop/checkbox.tpl" only_checkbox="true" field="securized_product" type="default"}</li> <li>{include file="controllers/products/multishop/checkbox.tpl" only_checkbox="true" field="available_for_order" type="default"}</li> <li>{include file="controllers/products/multishop/checkbox.tpl" only_checkbox="true" field="show_price" type="show_price"}</li> <li>{include file="controllers/products/multishop/checkbox.tpl" only_checkbox="true" field="online_only" type="default"}</li> </ul> </div> {/if} <label>{l s='Options:'}</label> </td> <td style="padding-bottom:5px;"> <ul class="listForm"> <li> <input type="checkbox" name="securized_product" id="securized_product" value="1" {if $product->securized_product}checked="checked"{/if} /> <label for="securized_product" class="t">{l s='securized product'}</label> </li> <li> <input type="checkbox" name="available_for_order" id="available_for_order" value="1" {if $product->available_for_order}checked="checked"{/if} /> <label for="available_for_order" class="t">{l s='available for order'}</label> </li> <li> <input type="checkbox" name="show_price" id="show_price" value="1" {if $product->show_price}checked="checked"{/if} {if $product->available_for_order}disabled="disabled"{/if}/> <label for="show_price" class="t">{l s='show price'}</label> </li> <li> <input type="checkbox" name="online_only" id="online_only" value="1" {if $product->online_only}checked="checked"{/if} /> <label for="online_only" class="t">{l s='online only (not sold in store)'}</label> </li> </ul> </td> ------------------------------------------------------------------------------------------------------------------------ Pour finir, j'ai ajouté mon champ en base de données et j'ai surchargé avec le controller "AdminProductsController" qui étend "AdminProductsControllerCore" pour faire suivre l'ajout et la mise des produits avec ce nouveau champ. J'ai ajouté la nouvelle variable dans les fonctions : - copyFromPost() - renderForm() - initFormInformations() ------------------------------------------------------------------------------------------------------------------------ Au final, pour la modification d'un produit existant, lorsque je coche ou décoche la checkbox, la modification est prise en compte avec un message d'erreur : Une erreur s'est produite pendant la mise à jour de l'objet. product () Pour l'ajout d'un nouveau produit, une nouvelle ligne est créée, mais vide. Et j'ai à nouveau le message d'erreur vu précédemment. Je ne comprends pas où est ma faute, je joins un screenshot de mon produit avec le nouveau champ et l'erreur. Si certain(e)s ont déjà été confronté(e)s à ce problème, je suis preneur de solutions et d'explications. Merci. Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted May 15, 2014 Share Posted May 15, 2014 Bonjour, désolé si je déterre un peu le topic mais comme j'ai été confronté au même problème et que j'ai trouvé solution je la donne ci-dessous. C'est très certainement dû au fait qu'il manque le champ en base de donnée au niveau de la table product_shop. Comme pour un champ qui doit être multilangue les champs avec shop => true doivent avoir leur colonne dans la table product_shop. 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