0
Я пытаюсь добавить продукты в корзину по отношению к клиенту (программно), но получаю сообщение об ошибке «Недопустимый запрос на добавление продукта в цитату». У меня есть как простые продукты (с настраиваемыми опциями), так и настраиваемые продукты. Ниже мой код. Пожалуйста помоги. Спасибо заранее.Ошибка при добавлении в корзину программно с настраиваемыми опциями
public function addtocartAction(){
try {
$cusId = $this->getRequest()->getParam('cusId');
$customer = Mage::getModel('customer/customer')->load($cusId);
$quote = Mage::getModel('sales/quote')->loadByCustomer($customer);
$quoteId = $quote->getId();
//$products = $this->getRequest()->getParam('products');
$products = json_decode('[{"proId": "906","proQty": "1", "options":{"17":"wq","16":"18"}}]');
foreach($products as $product) {
/*if (!$product->getId()) {
throw new Exception();
}*/
foreach ($product->options as $optKey => $optValue) {
$optAll[$optKey] = $optValue;
}
$mainProduct = Mage::getModel('catalog/product')->load($product->proId);
$params = array(
'product' => $product->proId,
'qty' => $product->proQty,
'options' => $optAll
);
echo "<pre />"; print_r($params);
$quote->addProduct($mainProduct, $params);
$quote->setIsActive(1);
$quote->collectTotals()->save();
}
$rslt['success'] = '1';
$rslt['message'] = 'Product has been succefully added to cart';
}
catch(Exception $e){
$rslt['success'] = '0';
$rslt['message'] = $e->getMessage();
}
print_r(json_encode($rslt));
}
Спасибо тонну. Этот код работает только для простых продуктов. Как я могу заставить его работать с настраиваемыми продуктами? когда я пытаюсь выполнить настройку своей отображаемой ошибки «Пожалуйста, укажите опцию (ы) продукта». –
Вы должны использовать ** super_attribute ** в параметрах, предоставляя атрибут и их значения. Например: '$ Params = массив ( 'продукта' => $ продукт-> proId, 'super_attribute' => массив ( 132 => 3, 133 => 8 ), 'Количество' => $ product-> proQty, ); 133,132 - атрибуты и 3,8 - значения атрибутов. –