после отладки много на Magento2, Найдено, что Magento2 не имеет никакой функциональности для хранения данных с REST API, как р эр StoreID getStore функции в StoreManager просто проверить, если магазин существует в сессии еще возвращенных по умолчанию, поэтому все REST API вызовов сохраняются в магазине по умолчанию ID
У меня есть более Rided Magento \ магазин \ Model \ StoreManager, как показано ниже:
и т.д./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>
vim Модель/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 API PUT Позвоните, я добавил storeId во всех запросах, в которых я необходимо установить информацию, которая будет храниться в соответствии с StoreID &, она работает как шарм :) для значений хранилища в admin Я использую storeID = 0 ByDefault для всех запросов PUT.
Спасибо за этот ответ. Для этого есть проблема (https://github.com/magento/magento2/issues/4952), но это, похоже, помогает. Чтобы улучшить ваш вопрос: «все» равно store_id = 0 (admin), но 'default' может быть переменной. Правда, в новой установке он по умолчанию, но в многопользовательском режиме это могут быть «en», «de», «fr» и т. Д. –