magento 1.8 aggiungere il prodotto al carrello utilizzando php

Fino Magento 1.7 sono stato in grado di utilizzare il codice riportato di seguito per aggiungere un prodotto al carrello a livello di programmazione:

require_once '../app/Mage.php'; 
Mage::getSingleton('core/session', array('name' => 'frontend')); 
umask(0);  
Mage::app();  
$session = Mage::getSingleton('customer/session');  
$product = Mage::getModel('catalog/product')->load(99);  //Random product ID

//get cart and add product
$cart = Mage::getSingleton('checkout/cart'); 
$cart->init();
$cart->addProduct($product, 1);

//update session
$session->setCartWasUpdated(true);

//save the cart
$cart->save();  

Tuttavia, questo non funziona più nel Magento 1.8. Ho cercato/ricerca tutto il giorno, perché questo è il caso. Purtroppo non ho trovato alcun indizio riguardo a questo problema.

Può avere a che fare con i cambiamenti nella 1.8, che provoca anche il requisito di forma-chiave quando si utilizza il metodo dell’URL; questo è un ipotesi però.

Chiunque di qualsiasi idea o un esempio su come eseguire questa operazione quando si lavora con Magento 1.8?

 

2 Replies
  1. 12

    Aveva un look fresco ed è andata bene subito. Solo per chiunque di riferimento, ecco il codice che sto utilizzando (Magento 1.8):

    //Mage init
    require_once '../../app/Mage.php'; 
    umask(0);  
    Mage::init('default');
    Mage::getSingleton('core/session', array('name' => 'frontend'));  
    
    //Get customer session
    $session = Mage::getSingleton('customer/session'); 
    
    //Get cart instance
    $cart = Mage::getSingleton('checkout/cart'); 
    $cart->init();
    
    //Add a product (simple); id:12,  qty: 3 
    $cart->addProduct(12, 3);
    
    //Add a product with custom options
    $productInstance = Mage::getModel('catalog/product')->load($productId);
    $param = array(
        'product' => $productInstance->getId(),
        'qty' => 1,
        'options' => array(
            234 => 'A value'  //Custom option with id: 234
        )
    );
    $request = new Varien_Object();
    $request->setData($param);
    $cart->addProduct($productInstance, $request);
    
    //Set shipping method
    $quote = $cart->getQuote();
    $shippingAddress = $quote->getShippingAddress();
    $shippingAddress->setShippingMethod('flatrate_flatrate')->save();               
    
    //update session
    $session->setCartWasUpdated(true);
    
    //save the cart
    $cart->save(); 
    • come circa configurabile prodotto ? come si fa ad aggiungere configurabile prodotto al carrello ?
    • Iirc, che è esattamente ciò che il // Aggiunge un prodotto con opzioni personalizzate una parte è di circa. Configurabile prodotto ha una serie di opzioni richieste si dovrà fornire.
    • Ad eccezione di un determinato prodotto ha super_attribute non options
    • Senza Mage::init('default'); il mio codice attraverso Il prodotto non può essere trovato. Perché? senza questo il mio codice non funziona mentre la maggior parte della documentazione è senza linea. Si prega di tag il mio nome, mentre si dà risposta alla notifica.
    • E come si può recuperare personalizzato array ($param) nella pagina del carrello? foreach($cart->getItemsCollection() as $_item…. ?
  2. 0

    Aggiungere questo codice nel controller e Inviare id prodotto dalla forma

    public function buyAction()
      {
            $sksku = $_REQUEST['skusky'];
            $_sku = "sample-".$sksku;
    
    $id = Mage::getModel('catalog/product')->getIdBySku($_sku);
    if ($id){
            $_catalog = Mage::getModel('catalog/product');
            $_productId = $_catalog->getIdBySku($_sku);
            $_product = Mage::getModel('catalog/product')->load($_productId);
            $id = $_product->getEntityId();
            $form_key = Mage::getSingleton('core/session')->getFormKey();
            $params = array('form_key'=>$form_key,'qty'=>1);
            $product = Mage::getModel('catalog/product')
            ->setStoreId(
            Mage::app()
            ->getStore()
            ->getId()
            )
            ->load($id);
            $cart = Mage::helper('checkout/cart')->getCart();
            $cart->addProduct($product, $params);
            $cart->save();
    
            $this->_redirect('checkout/cart');
            Mage::getSingleton('core/session')->addSuccess('Your product has been added to cart.');
    }
    else{
            $this->_redirectReferer();
            Mage::getSingleton('core/session')->addError('Sorry!!! No sample color option available for this product.');
    }      
      }

Lascia un commento