2014-06-10 1 views
1

J'essaie de développer une page personnalisée sur PS 1.6 où un client pourrait créer un nouveau produit à partir d'un formulaire, puis l'ajouter au panier. Disons par exemple, je vends des objets d'artisanat et je veux que mes clients remplissent un formulaire où ils doivent spécifier le type de bois, les dimensions, ... En fonction de ces critères, le prix serait modifié et il créera un produit "final" qui sera ajouté au panier du client.Comment créer un nouveau produit à partir d'un formulaire personnalisé et l'ajouter ensuite au panier?

Je sais comment je vais développer le formulaire et je crois que je peux ajouter le produit au panier avec updateQty() de Cart.php mais comment puis-je instancier mon produit à partir des données que je reçois du formulaire? J'essaye de rechercher dans tous les dossiers mais je ne peux pas sembler trouver où de nouveaux produits sont instanciés.

Merci à l'avance pour l'aide

Répondre

3

Je réponds à ma question depuis que j'ai réussi à le faire. Voici ma solution:

public static function créerProduct($name, $ean13, $category, $price, $description, $reference){ 
    $product = new Product(); 
    $languages=Language::getLanguages(); 
    foreach($languages as $lang){ 
     $product->name[$lang['id_lang']]=$name; 
     $product->link_rewrite[$lang['id_lang']]=$name; 
     $product->description[$lang['id_lang']]=$description; 
    } 
    $product->reference=$reference; 
    $product->quantity=0; 
    $product->id_category_default=$category; 
    $product->id_category[]=$product->id_category_default; 
    $product->price=$price; 
    $product->id_tax_rules_group=1; 
    $product->indexed=0; 
    try{ 
     $product->save(); 
     } catch (PrestaShopException $e){ 
     echo $e->displayMessage(); 
     } 
    $product->updateCategories(array_map('intval', $product->id_category)); 
    StockAvailable::setQuantity($product->id,'',1); 
    return $product->id; 
} 

public static function addProduitauPanier($id_product){ 
    $context=Context::getContext(); 
    $result=$context->cart->updateQty(1,$id_product); 
} 
+0

Comment l'avez-vous résolu, que le nouveau produit créé n'est pas visible pour tous les clients? –

+0

Je n'ai pas travaillé sur cela depuis un moment, mais il devrait y avoir un attribut pour le produit pour le rendre invisible sur la page de la liste des produits – Kaamyi

0

Pouvez-vous pas utiliser des attributs pour développer le produit? La raison en est que vous allez avoir en effet des clients ajoutant des informations à votre base de données et que vous allez devoir les désinfecter et les valider. J'utiliserais les attributs intégrés de Prestashop pour faire quelque chose comme ça.

+0

Pourriez-vous élaborer à ce sujet? Comment pensez-vous que je peux utiliser les attributs de Prestashop pour permettre au client de "créer" son propre produit? Merci – Kaamyi

Questions connexes