Question

J'ai un module personnalisé qui fait même fonction de la page d'affichage du produit. J'utilise ce module afin de montrer mes produits bundle. j'ai créé un module entièrement fonctionnel pour cela.

J'ai chargé le produit le nom de produits avec succès et affiché, la description, les différentes options dans ma page. Cependant, mon bouton Ajouter au panier ne fonctionne pas.

Je suis mon chargement tel produit

<?php
/*getInternationalPlans() is a custom function which filter out bundle products that 
  satisfy certain conditions. there may be more than one bundle products for this   
  function
 */
$_product=$this->getInternationalPlans($custom_select_business);                                    
foreach ( $_product as $product ){
$plan_array [] = $product->getId ();
}

?>
<?php
 /*it unregisters the product  */
  Mage::unregister ( 'product' );
  Mage::register('international_product',$plan_array[0]);// i need only the first product                       
/*  loading the current product*/  
  $_product=Mage::getSingleton('catalog/product')->load($plan_array[0]);
 /*registering the current product*/
 Mage::register('product', $_product); // add the product object in the registry                    
 $block = Mage::getBlockSingleton('Mage_Catalog_Block_Product_View'); // Instantiate the product view block

?>

mais dans la page par défaut de vue du produit prdoucts sont le chargement en utilisant la méthode getProduct (). ma forme est comme ça ... ce qui est exactement identique à celui d'un par défaut

 <form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post"
 id="product_addtocart_form"
  <?php if($_product->getOptions()): ?> enctype="multipart/form-data"
 <?php endif; ?>> 
       /*all options are showing here*/
      /*...................................*/
         $buttonTitle = $this->__('Order Now');
         <button type="button" title="<?php echo $buttonTitle ?>" id="international_btn" class="btn btn-success" onclick="productAddToCartForm.submit(this)">
 </form>

Cependant, la partie de la forme d'action est vide, après que je charge ce code. quand je clique sur le bouton, il charge la même page et pendant consolante, il dit que 'productId is not defined'. Donc, j'ai vérifié la définition de 'productAddToCartForm ' et a découvert qu'il utilise 'productId' dans sa définition. Comment puis-je mettre 'prdouctId' dans ma page? pourquoi champ d'action de forme est vide?

comment peut faire ma commande travail bouton maintenant parfaitement?

S'il vous plaît aidez-moi ...

Était-ce utile?

La solution

Sur la mise en page standard il y a un champ caché qui distingue ce dans le modèle de vue du produit (/app/design/frontend/base/default/template/catalog/product/view.phtml):

<input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />

Je suggère avec votre code, vous pouvez ajouter simplement ce champ caché après l'ouverture du formulaire.

Le formulaire est l'action d'appeler $this->getSubmitUrl($_product). Si vous regardez dans le Mage_Catalog_Block_Product_Abstract de classe, vous verrez le chemin par défaut d'obtenir cela. L'option la plus simple serait de vous assurer que votre bloc étend cette classe ou un autre bloc qui la prolonge (par exemple Mage_Catalog_Block_Product_View). Quelque chose comme ce qui suit serait suffisant.

class Your_Catalog_Block_Product_View extends Mage_Catalog_Block_Product_Abstract

Autres conseils

Vous n'ajoute pas ce bloc dans le formulaire

 <?php echo $this->getBlockHtml('formkey') ?>

ou vous pouvez également ajouter cette sous forme

 <input type="hidden" value="<?php Mage::getSingletonModel('core/session')->getFormKey()?>" name="form_key">
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top