62 private $initialEnvironmentInfo;
84 \
Magento\Framework\View\DesignInterface $viewDesign,
85 \
Magento\Framework\
App\DesignInterface $design,
86 \
Magento\Framework\TranslateInterface $translate,
90 \
Magento\Framework\Locale\ResolverInterface $localeResolver,
91 \Psr\Log\LoggerInterface $logger,
94 $this->_localeResolver = $localeResolver;
95 parent::__construct(
$data);
97 $this->_viewDesign = $viewDesign;
98 $this->_design = $design;
99 $this->_translate = $translate;
100 $this->_scopeConfig = $scopeConfig;
118 $area = \
Magento\Framework\
App\Area::AREA_FRONTEND,
122 if ($this->initialEnvironmentInfo !==
null) {
123 $this->logger->error(
__(
'Environment emulation nesting is not allowed.'));
127 if (
$storeId == $this->_storeManager->getStore()->getStoreId() && !$force) {
133 $this->inlineTranslation->suspend($this->inlineConfig->isActive(
$storeId));
136 $storeTheme = $this->_viewDesign->getConfigurationDesignTheme($area, [
'store' =>
$storeId]);
137 $this->_viewDesign->setDesignTheme($storeTheme, $area);
139 if ($area == \
Magento\Framework\
App\Area::AREA_FRONTEND) {
140 $designChange = $this->_design->loadChange(
$storeId);
141 if ($designChange->getData()) {
142 $this->_viewDesign->setDesignTheme($designChange->getDesign(), $area);
147 $this->_storeManager->setCurrentStore(
$storeId);
150 $newLocaleCode = $this->_scopeConfig->getValue(
151 $this->_localeResolver->getDefaultLocalePath(),
155 $this->_localeResolver->setLocale($newLocaleCode);
156 $this->_translate->setLocale($newLocaleCode);
157 $this->_translate->loadData($area);
171 if ($this->initialEnvironmentInfo ===
null) {
176 $initialDesign = $this->initialEnvironmentInfo->getInitialDesign();
179 $this->_storeManager->setCurrentStore($initialDesign[
'store']);
180 $this->
_restoreInitialLocale($this->initialEnvironmentInfo->getInitialLocaleCode(), $initialDesign[
'area']);
182 $this->initialEnvironmentInfo =
null;
193 $this->initialEnvironmentInfo = new \Magento\Framework\DataObject();
194 $this->initialEnvironmentInfo->setInitialTranslateInline(
195 $this->inlineTranslation->isEnabled()
198 'area' => $this->_viewDesign->getArea(),
199 'theme' => $this->_viewDesign->getDesignTheme(),
200 'store' => $this->_storeManager->getStore()->getStoreId(),
202 )->setInitialLocaleCode(
203 $this->_localeResolver->getLocale()
215 $this->inlineTranslation->resume($initialTranslate);
227 $this->_viewDesign->setDesignTheme($initialDesign[
'theme'], $initialDesign[
'area']);
240 $initialArea = \
Magento\Framework\
App\Area::AREA_ADMINHTML
242 $this->_localeResolver->setLocale($initialLocaleCode);
243 $this->_translate->setLocale($initialLocaleCode);
244 $this->_translate->loadData($initialArea);
_restoreInitialDesign(array $initialDesign)
_restoreInitialLocale( $initialLocaleCode, $initialArea=\Magento\Framework\App\Area::AREA_ADMINHTML)
_restoreInitialInlineTranslation($initialTranslate)
__construct(\Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\View\DesignInterface $viewDesign, \Magento\Framework\App\DesignInterface $design, \Magento\Framework\TranslateInterface $translate, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, ConfigInterface $inlineConfig, \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation, \Magento\Framework\Locale\ResolverInterface $localeResolver, \Psr\Log\LoggerInterface $logger, array $data=[])
storeCurrentEnvironmentInfo()
startEnvironmentEmulation( $storeId, $area=\Magento\Framework\App\Area::AREA_FRONTEND, $force=false)
stopEnvironmentEmulation()