Количество не обновляется от Frontend
-
29-09-2020 - |
Вопрос
У нас есть много поставщиков, и мы дали возможность поставщику для обновления информации о продукте от foreend. Мы используем следующий код для цены.
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$id= $this->getRequest()->getParam('id');
$customerid=Mage::getSingleton('customer/session')->getCustomerId();
$collection_product = Mage::getModel('marketplace/product')->getCollection()->addFieldToFilter('mageproductid',array('eq'=>$id))->addFieldToFilter('userid',array('eq'=>$customerid));
try{
$upd_price = $this->getRequest()->getParam('price');
$product = Mage::getModel('catalog/product')->load($id);
$product->setPrice($upd_price);
$product->save();
echo $price = $product->getPrice();
echo $name = $product->getName();
$response['message'] = 'Your Product Is Been Sucessfully Updated';
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));
}catch(Exception $e){
echo "Not Saving"; exit;
Mage::log($e->getMessage());
}
}
.
Мы используем аналогичный код для количества, и его не работает нормально
$id= $this->getRequest()->getParam('id');
$customerid=Mage::getSingleton('customer/session')->getCustomerId();
$collection_product = Mage::getModel('marketplace/product')->getCollection()->addFieldToFilter('mageproductid',array('eq'=>$id))->addFieldToFilter('userid',array('eq'=>$customerid));
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
$stockItem->setData('manage_stock', 1);
$stockItem->setData('qty', $this->getRequest()->getParam('qty'));
$stockItem->save();
$response['message'] = 'Your Product Is Been Sucessfully Updated';
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));
}
.
Мы используем следующий код для обновления как цены, так и количества.Только цена работает, <сильное> количество не обновляется .
public function massupdatesellerproAction(){
if($this->getRequest()->isPost()){
if(!$this->_validateFormKey()){
$this->_redirect('marketplace/marketplaceaccount/myproductslist/');
}
$ids= $this->getRequest()->getParam('product_mass_update');
$price= $this->getRequest()->getParam('price');
$qty = $this->getRequest()->getParam('qty');
foreach ($ids as $key => $value) {
$product = Mage::getModel('catalog/product')->load($value);
$product->setPrice($price[$key]);
$product->setQty($qty[$key]);
$product->save();
}
Mage::getSingleton('core/session')->addSuccess( Mage::helper('marketplace')->__('Products has been sucessfully deleted from your account'));
$this->_redirect('marketplace/marketplaceaccount/myproductslist/');
}}
. Решение
Заменить это
$product->setQty($qty[$key]);
с
AFTE Увидеть Вам сайт, который вы должны дать отдельное имя для каждого количества поля.Потому что для некоторого количества продукта нет там.
$j=0;
foreach ($ids as $key => $value) {
$j=$j+1;
$qty = $this->getRequest()->getParam('qty'.$j);
$product = Mage::getModel('catalog/product')->load($value);
$product->setPrice($price[$key]);
$product->save();
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($value);
$stockItem->setData('manage_stock', 1);
$stockItem->setData('qty', $qty);
$stockItem->save();
}
. Другие советы
попробуйте это
public function massupdatesellerproAction(){
if($this->getRequest()->isPost()){
if(!$this->_validateFormKey()){
$this->_redirect('marketplace/marketplaceaccount/myproductslist/');
}
$ids= $this->getRequest()->getParam('product_mass_update');
$price= $this->getRequest()->getParam('price');
$qty = $this->getRequest()->getParam('qty');
foreach ($ids as $key => $value) {
$stockItem =Mage::getModel('cataloginventory/stock_item')->loadByProduct($value);
$stockItemId = $stockItem->getId();
$product->set('price',$price[$key]);
$stockItem->setData('manage_stock', 1);
$stockItem->setData('qty', (integer)$qty[$key]);
$stockItem->save();
}
Mage::getSingleton('core/session')->addSuccess( Mage::helper('marketplace')->__('Products has been sucessfully deleted from your account'));
$this->_redirect('marketplace/marketplaceaccount/myproductslist/');
}}
. попробуйте это
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
$stockItemId = $stockItem->getId();
//echo $stockItemId;
if ($stockItemId) {
if($Qty==0):
$stockItem->setData('use_config_manage_stock', 0);
$stockItem->setData('manage_stock', 1);
$stockItem->setData('is_in_stock', 0);
$stockItem->setData('qty', 0);
else:
$stockItem->setData('use_config_manage_stock', 1);
$stockItem->setData('manage_stock', 0);
$stockItem->setData('is_in_stock', 1);
$stockItem->setData('qty', $Qty);
endif;
$stockItem->save();
unset($stockItem);
echo "Done";
}
. Не связан с magento.stackexchange