kaamyi Posted June 6, 2014 Share Posted June 6, 2014 (edited) Bonjour à tous, Je suis en train de créer un module sous PS 1.6 pour pouvoir créer un produit à partir d'un formulaire que remplit le client. Le client remplit donc le formulaire avec des les caractéristiques qu'il veut (dimensions, couleur, etc) ce qui fera changer le prix et le produit devra être ajouté à son panier une fois le formulaire rempli. Pour la partie formulaire, ça ne pose pas de souci et je devrais pouvoir ajouter mon produit au panier avec la méthode updateQty() de Cart.php mais je n'arrive pas à trouver le moyen d'instancier mon Product à partir des données de mon formulaire.Est-ce que quelqu'un a déjà réussi à faire ça? J'ai essayé de le faire en rajoutant directement dans les base de données mais forcément ça ne pouvait pas être aussi simpleMerci par avance et j'espère que vous pourrez m'aider ! Edited June 10, 2014 by kaamyi (see edit history) Link to comment Share on other sites More sharing options...
kaamyi Posted June 10, 2014 Author Share Posted June 10, 2014 Up, j'ai changé complétement mon post étant donné que la méthode que j'essayais ne marchait pas mais j'ai toujours besoin d'aide. Link to comment Share on other sites More sharing options...
herve25 Posted June 11, 2014 Share Posted June 11, 2014 Bonjour, Pour créer un nouveau produit le plus simple est de passer par un nouvel objet "produit" avec un code de ce type ( en remplaçant avec les variables réceptionnées par ton formulaire. $product = new Product(); $languages = Language::getLanguages(); foreach ($languages as $lang) { $product->name[$lang['id_lang']] = $productName; $product->link_rewrite[$lang['id_lang']] = $productLink; $product->description[$lang['id_lang']] = $productText; } $product->reference = $productReference; $product->quantity = 10; $product->id_category_default = 2; $product->price = 0; $product->id_tax_rules_group = 1; $product->indexed = 0; try { $product->save(); } catch (PrestaShopException $e) { echo $e->displayMessage(); } N'hésites pas à consulter le fichier class/Product.php Link to comment Share on other sites More sharing options...
kaamyi Posted June 11, 2014 Author Share Posted June 11, 2014 (edited) Bonjour et merci beaucoup. A priori, j'ai réussi à créer mon produit et à l'ajouter au panier mais lorsque j'essaie de modifier un des champ du produit en back office j'ai ces erreurs-là : "2 erreurs Le produit doit être au minimum dans une catégorie. Ce produit doit être dans la catégorie par défaut." Et si j'essaye d'y accéder va sur mon panier j'obtiens cette erreur : "Il y a 1 erreur vous n'avez pas accès à ce produit" J'ai pourtant bien spécifié la catégorie, il doit y avoir une méthode à invoquer pour associer la catégorie au produit dans la table category_product parce qu'elle ne semble pas associée. Est-ce que ça ne serait pas : /** * Update categories to index product into * * @param string $productCategories Categories list to index product into * @param boolean $keeping_current_pos (deprecated, no more used) * @return array Update/insertion result */ public function updateCategories($categories, $keeping_current_pos = false) { if (empty($categories)) return false; $result = Db::getInstance()->executeS(' SELECT c.`id_category` FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN `'._DB_PREFIX_.'category` c ON (c.`id_category` = cp.`id_category`) '.Shop::addSqlAssociation('category', 'c', true, null, true).' WHERE cp.`id_category` NOT IN ('.implode(',', array_map('intval', $categories)).') AND cp.id_product = '.$this->id ); // if none are found, it's an error if (!is_array($result)) return false; foreach ($result as $categ_to_delete) $this->deleteCategory($categ_to_delete['id_category']); if (!$this->addToCategories($categories)) return false; SpecificPriceRule::applyAllRules(array((int)$this->id)); return true; } Ca a fonctionné avec cette fonction. C'est résolu ! Edited June 11, 2014 by kaamyi (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