質問

私たちはマルチベンダーサイトを持っており、ベンダーがフロントエンドから製品情報を更新できるオプションを提供しました。価格には次のコードを使用しています。

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

Web サイトを確認した後は、数量フィールドごとに個別の名前を付ける必要があります。一部の商品には数量が存在しないためです。

$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";
    }
.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top