2014-02-18 2 views
2

До Magento 1.7 Я не был в состоянии использовать следующий код, чтобы добавить товар в корзину программно:Magento 1,8 добавить продукт в корзину, используя PHP

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(); 

Однако это больше не работает в Magento 1.8. Я пробовал/искал весь день, почему это так. К сожалению, я не нашел никакого представления об этой проблеме.

Возможно, это связано с изменениями в 1.8, что также вызывает необходимость использования ключа формы при использовании метода URL; это дикая догадка.

Любая идея или рабочий пример о том, как это сделать при работе с Magento 1.8?

ответ

12

Был свежий взгляд на него и получил его работу хорошо сразу. Только для справки, вот код, который я использую (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(); 
+0

как насчет конфигурируемого продукта? как вы добавляете настраиваемый продукт в корзину? – mahdi

+1

@mahdi: Iirc, это именно то, что * // Добавление продукта с настраиваемыми параметрами * часть. Конфигурируемый продукт имеет набор необходимых параметров, которые вам придется предоставить. –

+1

За исключением конфигурируемого продукта, 'super_attribute' не' options' – mkutyba

Смежные вопросы