12
12
use Magento \Store \Model \StoreIsInactiveException ;
13
13
use Magento \Framework \Exception \NoSuchEntityException ;
14
14
use \InvalidArgumentException ;
15
+ use Magento \Store \Api \StoreResolverInterface ;
16
+ use Magento \Framework \App \ObjectManager ;
15
17
16
18
/**
17
19
* Class StoreCookie
@@ -33,19 +35,27 @@ class StoreCookie
33
35
*/
34
36
protected $ storeRepository ;
35
37
38
+ /**
39
+ * @var StoreResolverInterface
40
+ */
41
+ private $ storeResolver ;
42
+
36
43
/**
37
44
* @param StoreManagerInterface $storeManager
38
45
* @param StoreCookieManagerInterface $storeCookieManager
39
46
* @param StoreRepositoryInterface $storeRepository
47
+ * @param StoreResolverInterface $storeResolver
40
48
*/
41
49
public function __construct (
42
50
StoreManagerInterface $ storeManager ,
43
51
StoreCookieManagerInterface $ storeCookieManager ,
44
- StoreRepositoryInterface $ storeRepository
52
+ StoreRepositoryInterface $ storeRepository ,
53
+ StoreResolverInterface $ storeResolver = null
45
54
) {
46
55
$ this ->storeManager = $ storeManager ;
47
56
$ this ->storeCookieManager = $ storeCookieManager ;
48
57
$ this ->storeRepository = $ storeRepository ;
58
+ $ this ->storeResolver = $ storeResolver ?: ObjectManager::getInstance ()->get (StoreResolverInterface::class);
49
59
}
50
60
51
61
/**
@@ -72,5 +82,13 @@ public function beforeDispatch(
72
82
$ this ->storeCookieManager ->deleteStoreCookie ($ this ->storeManager ->getDefaultStoreView ());
73
83
}
74
84
}
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
+ }
75
93
}
76
94
}
0 commit comments