15
15
use Magento \Store \Api \StoreRepositoryInterface ;
16
16
use Magento \Store \Api \StoreResolverInterface ;
17
17
use Magento \Store \Model \Store ;
18
+ use Magento \Store \Model \StoreManagerInterface ;
18
19
use Magento \Store \Model \StoreResolver ;
19
20
use Magento \Store \Model \StoreSwitcher \HashGenerator ;
20
21
@@ -38,13 +39,19 @@ class Redirect extends Action implements HttpGetActionInterface, HttpPostActionI
38
39
*/
39
40
private $ hashGenerator ;
40
41
42
+ /**
43
+ * @var \Magento\Store\Model\StoreManagerInterface
44
+ */
45
+ private $ storeManager ;
46
+
41
47
/**
42
48
* @param Context $context
43
49
* @param StoreRepositoryInterface $storeRepository
44
50
* @param StoreResolverInterface $storeResolver
45
51
* @param \Magento\Framework\Session\Generic $session
46
52
* @param \Magento\Framework\Session\SidResolverInterface $sidResolver
47
53
* @param HashGenerator $hashGenerator
54
+ * @param \Magento\Store\Model\StoreManagerInterface $storeManager
48
55
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
49
56
*/
50
57
public function __construct (
@@ -53,12 +60,14 @@ public function __construct(
53
60
StoreResolverInterface $ storeResolver ,
54
61
\Magento \Framework \Session \Generic $ session ,
55
62
\Magento \Framework \Session \SidResolverInterface $ sidResolver ,
56
- HashGenerator $ hashGenerator
63
+ HashGenerator $ hashGenerator ,
64
+ StoreManagerInterface $ storeManager
57
65
) {
58
66
parent ::__construct ($ context );
59
67
$ this ->storeRepository = $ storeRepository ;
60
68
$ this ->storeResolver = $ storeResolver ;
61
69
$ this ->hashGenerator = $ hashGenerator ;
70
+ $ this ->storeManager = $ storeManager ;
62
71
}
63
72
64
73
/**
@@ -81,6 +90,8 @@ public function execute()
81
90
try {
82
91
/** @var Store $fromStore */
83
92
$ fromStore = $ this ->storeRepository ->get ($ fromStoreCode );
93
+ /** @var Store $targetStore */
94
+ $ targetStore = $ this ->storeRepository ->get ($ targetStoreCode );
84
95
} catch (NoSuchEntityException $ e ) {
85
96
$ error = __ ('Requested store is not found ' );
86
97
}
@@ -104,6 +115,7 @@ public function execute()
104
115
'_nosid ' => true ,
105
116
'_query ' => $ query
106
117
];
118
+ $ this ->storeManager ->setCurrentStore ($ targetStore );
107
119
$ this ->_redirect ->redirect ($ this ->_response , 'stores/store/switch ' , $ arguments );
108
120
}
109
121
0 commit comments