【问题标题】:save all textfields by clicking on one update button通过单击一个更新按钮保存所有文本字段
【发布时间】:2016-04-04 18:00:47
【问题描述】:

我们有 magento 网站。我们为供应商提供了编辑多个产品的所有文本字段并通过单击一个“更新”按钮保存所有文本字段的选项。

我们正在使用以下代码来节省一个文本字段的价格。

价格

public function updateFieldPriceAction(){
    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));
    //Mage::getSingleton('core/session')->setEditProductId($id);

    try{
    $upd_price = $this->getRequest()->getParam('price');
    $product = Mage::getModel('catalog/product')->load($id);        
    //$product->setData('price', $upd_price);
    $product->setPrice($upd_price);

    //$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
    //$stockItem->setData('manage_stock', 1);
    //$stockItem->setData('qty', $this->getRequest()->getParam('qty'));
    $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)); 
    //Mage::getSingleton('core/session')->addSuccess(Mage::helper('marketplace')->__('Your Product Is Been Sucessfully Updated'));


    //endif;
    }catch(Exception $e){
    echo "Not Saving"; exit;    
    Mage::log($e->getMessage());
    }

  }

我们正在使用以下代码来节省一个文本字段的数量。

数量

public function updateFieldAction(){
        $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));
        //Mage::getSingleton('core/session')->setEditProductId($id);
        $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)); 
        //Mage::getSingleton('core/session')->addSuccess(Mage::helper('marketplace')->__('Your Product Is Been Sucessfully Updated'));
      }

我们使用以下代码通过单个更新按钮保存价格和数量的所有文本字段。价格在起作用。但数量不起作用。

controller.php

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 saved from your account'));
        $this->_redirect('marketplace/marketplaceaccount/myproductslist/');


    }}

【问题讨论】:

    标签: javascript php database magento


    【解决方案1】:

    setQty 在 magento 中不工作。数量通常节省库存而不是产品。删除

    $product->setQty($qty[$key]);
    

    来自您的控制器。

    这是一个部分答案,但希望它能让您朝着正确的方向前进。 您可以尝试通过controller.php中的以下代码来节省数量

     $product->setStockData(
       array( 
              'is_in_stock' => 1, 
              'qty' => $qty[$key],
              'manage_stock' => 1,
              'use_config_notify_stock_qty' => 1
       )
     );
    

    或 你可以 试试这个 controller.php

    $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
    $stockItem->setData('qty', $this->getRequest()->getParam('qty'));
    $stockItem->save();
    $product->save();
    

    然后像以前一样设置并保存您的更改。 你可以查看this

    这是您更新数量的完整功能

    public function updateFieldAction(){
            $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));
            //Mage::getSingleton('core/session')->setEditProductId($id);
            $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
            $stockItem->setData('manage_stock', 1);
            $stockItem->setData('qty', $this->getRequest()->getParam('qty'));
    
            $stockItem->save();
            $product = Mage::getModel('catalog/product')->load( 'id' );
            $product->save();
    
            $response['message'] = 'Your Product Is Been Sucessfully Updated';
            $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response)); 
            //Mage::getSingleton('core/session')->addSuccess(Mage::helper('marketplace')->__('Your Product Is Been Sucessfully Updated'));
          }
    

    控制器代码

    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->setStockData(
           array( 
            'is_in_stock' => 1, 
            'qty' => $qty[$key],
            'manage_stock' => 1,
            'use_config_notify_stock_qty' => 1
           )
        );
    
    
         $product->save();
        }
        Mage::getSingleton('core/session')->addSuccess( Mage::helper('marketplace')->__('Products has been sucessfully saved from your account'));
        $this->_redirect('marketplace/marketplaceaccount/myproductslist/');
    
    
    }}
    

    【讨论】:

    • 我正在尝试这个 controller.php => pastebin.com/9zLVnpFA 但它不工作
    • 设置 $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);在 foreach 循环中声明 $product 之后
    • 能否给我完整的“公共函数massupdatesellerproAction()”代码
    • 我会检查并通知您。现场发生了一些问题。
    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    相关资源
    最近更新 更多