1212use Magento \Store \Model \StoreIsInactiveException ;
1313use Magento \Framework \Exception \NoSuchEntityException ;
1414use \InvalidArgumentException ;
15+ use Magento \Store \Api \StoreResolverInterface ;
16+ use Magento \Framework \App \ObjectManager ;
1517
1618/**
1719 * Class StoreCookie
@@ -33,19 +35,27 @@ class StoreCookie
3335 */
3436 protected $ storeRepository ;
3537
38+ /**
39+ * @var StoreResolverInterface
40+ */
41+ private $ storeResolver ;
42+
3643 /**
3744 * @param StoreManagerInterface $storeManager
3845 * @param StoreCookieManagerInterface $storeCookieManager
3946 * @param StoreRepositoryInterface $storeRepository
47+ * @param StoreResolverInterface $storeResolver
4048 */
4149 public function __construct (
4250 StoreManagerInterface $ storeManager ,
4351 StoreCookieManagerInterface $ storeCookieManager ,
44- StoreRepositoryInterface $ storeRepository
52+ StoreRepositoryInterface $ storeRepository ,
53+ StoreResolverInterface $ storeResolver = null
4554 ) {
4655 $ this ->storeManager = $ storeManager ;
4756 $ this ->storeCookieManager = $ storeCookieManager ;
4857 $ this ->storeRepository = $ storeRepository ;
58+ $ this ->storeResolver = $ storeResolver ?: ObjectManager ::getInstance ()->get (StoreResolverInterface::class);
4959 }
5060
5161 /**
@@ -72,5 +82,13 @@ public function beforeDispatch(
7282 $ this ->storeCookieManager ->deleteStoreCookie ($ this ->storeManager ->getDefaultStoreView ());
7383 }
7484 }
85+ if (
86+ $ this ->storeCookieManager ->getStoreCodeFromCookie () === null
87+ || $ request ->getParam (StoreResolverInterface::PARAM_NAME ) !== null
88+ ) {
89+ $ storeId = $ this ->storeResolver ->getCurrentStoreId ();
90+ $ store = $ this ->storeRepository ->getActiveStoreById ($ storeId );
91+ $ this ->storeCookieManager ->setStoreCookie ($ store );
92+ }
7593 }
7694}
0 commit comments