2016-06-10 6 views
7

नमूना डेटाMagento2: REST API: सहेजें काम नहीं कर रहा

REST API catalogProductRepositoryV1 REF का उपयोग के साथ Magento2.1.0-RC1 शाखा का उपयोग करते हुए दुकान देखने के प्रति उत्पाद विवरण: http://devdocs.magento.com/swagger/index.html व्यवस्थापक टोकन को API से कुंजी प्राप्त करें और उस कुंजी का उपयोग करें

में पोस्ट/V1/उत्पादों

&

PUT/V1/उत्पादों/{sku}

दोनों पैरामीटर एक साथ करने की कोशिश की पैरामीटर के साथ के बाद एक

  • store_id = 0
  • storeId = 0

    निम्नलिखित JSON

  • का उपयोग कर

{ 
 
    "saveOptions": "true", 
 
    "product": { 
 
     "name": "Test11_11", 
 
     "sku": "TESTOPP_111", 
 
     "attributeSetId": "15", 
 
     "price": "10", 
 
     "weight": "10", 
 
     "status": "1", 
 
     "visibility": "3", 
 
     "customAttributes": [ 
 
      { 
 
       "attributeCode": "manufacturer", 
 
       "value": "222" 
 
      }, 
 
      { 
 
       "attributeCode": "tax_class_id", 
 
       "value": "0" 
 
      }, 
 
      { 
 
       "attributeCode": "specialPrice", 
 
       "value": "10" 
 
      }, 
 
      { 
 
       "attributeCode": "description", 
 
       "value": "44332211" 
 
      }, 
 
      { 
 
       "attributeCode": "eco_collection", 
 
       "value": "1" 
 
      } 
 
     ], 
 
     "typeId": "simple" 
 
    } 
 
}

store_id/storeId क्षेत्र, का समर्थन नहीं करता है, लेकिन उत्पाद में जानकारी स्टोर करने के लिए बचाने के लिए यह डिफ़ॉल्ट स्टोर आईडी को बचाने नहीं है

प्राप्त/V1/उत्पादों पैरामीटर storeId है ही मैं PUT & पोस्ट के साथ की कोशिश की थी लेकिन Magento2 पर बहुत कुछ डिबगिंग के बाद PUT & पोस्ट

उत्तर

4

साथ काम नहीं कर पाया कि Magento2 पी के रूप में बाकी एपीआई से स्टोर डाटा के लिए किसी भी सुविधा उपलब्ध नहीं है एर StoreManager में StoreID getStore समारोह अगर दुकान सत्र बाकी वापसी डिफ़ॉल्ट में मौजूद है बस की जाँच करें, यही वजह है कि सभी बाकी एपीआई कॉल में डिफ़ॉल्ट स्टोर आईडी जमा हो जाती है

मैं अधिक Rided Magento \ स्टोर \ मॉडल \ StoreManager नीचे के रूप में:

etc/di.xml

<?xml version="1.0"?> 
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> 
    <preference for="Magento\Store\Model\StoreManager" type="Emizentech\MobileAdmin\Model\EmizenStoreManager" /> 
</config> 

विम मॉडल/EmizenStoreManager।php

<?php 
namespace Emizentech\MobileAdmin\Model; 

use Magento\Store\Api\StoreResolverInterface; 
use Magento\Framework\App\RequestInterface; 

/** 
* @SuppressWarnings(PHPMD.CouplingBetweenObjects) 
*/ 
class EmizenStoreManager extends \Magento\Store\Model\StoreManager 
{ 
     /** 
    * Request instance 
    * 
    * @var \Magento\Framework\App\RequestInterface 
    */ 
    protected $_request; 

     /** 
    * @param \Magento\Store\Api\StoreRepositoryInterface $storeRepository 
    * @param \Magento\Store\Api\GroupRepositoryInterface $groupRepository 
    * @param \Magento\Store\Api\WebsiteRepositoryInterface $websiteRepository 
    * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig 
    * @param StoreResolverInterface $storeResolver 
    * @param \Magento\Framework\Cache\FrontendInterface $cache 
    * @param bool $isSingleStoreAllowed 
    */ 
    public function __construct(
     \Magento\Store\Api\StoreRepositoryInterface $storeRepository, 
     \Magento\Store\Api\GroupRepositoryInterface $groupRepository, 
     \Magento\Store\Api\WebsiteRepositoryInterface $websiteRepository, 
     \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, 
     StoreResolverInterface $storeResolver, 
     \Magento\Framework\Cache\FrontendInterface $cache, 
     RequestInterface $request, 
     $isSingleStoreAllowed = true 
    ) { 
     $this->storeRepository = $storeRepository; 
     $this->websiteRepository = $websiteRepository; 
     $this->groupRepository = $groupRepository; 
     $this->scopeConfig = $scopeConfig; 
     $this->storeResolver = $storeResolver; 
     $this->cache = $cache; 
     $this->_request = $request; 
     $this->isSingleStoreAllowed = $isSingleStoreAllowed; 
    } 
    /** 
    * {@inheritdoc} 
    */ 
    public function getStore($storeId = null) 
    { 

       if($this->_request->isPut() && strlen($this->_request->getParam('storeId'))) 
       { 
         return parent::getStore($this->_request->getParam('storeId')); 
       } 
       return parent::getStore($storeId); 
    } 

} 
इस फाइल मैं जाँच करें कि यदि अनुरोध प्रकार PUT है और URL परमाटर storeId सेट कि फोन माता पिता :: getStore() और स्टोर से मौजूद है में

और REST एपीआई पुट कॉल, मैंने storeId को सभी अनुरोधों में जोड़ा है I StoreID & के अनुसार संग्रहीत करने के लिए जानकारी सेट करने की आवश्यकता है, यह एक आकर्षण की तरह काम करता है :) व्यवस्थापक में स्टोर मूल्यों के लिए मैं storeID = 0 सभी PUT अनुरोधों के लिए ByDefault का उपयोग कर रहा हूं।

5

मुझे एक समान परिदृश्य का सामना करना पड़ा है जहां मैं प्रति वेबसाइट कीमतों को अपडेट करना चाहता हूं। तो कीमत को अपडेट करने के लिए, मैंने

/rest/<store_code>/V1/products/<sku> 

यह ठीक काम किया है।

तो मुझे लगता है कि आप प्रति स्टोर उत्पाद डेटा अपडेट करने के लिए इसका उपयोग कर सकते हैं।

4

/rest/<store_code>/V1/products/<sku>

यह एक काम करता है, तो आप इस उत्तर के लिए

  • सभी
  • डिफ़ॉल्ट

+1

धन्यवाद का उपयोग कर सकते स्टोर कोड के लिए। इसके लिए एक समस्या है (https://github.com/magento/magento2/issues/4952) ने इसकी सूचना दी, लेकिन ऐसा लगता है कि यह मदद करता है। अपने प्रश्न को बेहतर बनाने के लिए: 'all' store_id = 0 (admin) के बराबर है, लेकिन 'डिफ़ॉल्ट' चर हो सकता है। सच है, एक ताजा स्थापना में यह डिफ़ॉल्ट है, लेकिन बहुस्तरीय में यह 'एन', 'डी', 'एफ', आदि हो सकता है। –

संबंधित मुद्दे