Skip to content

Commit 3d279cf

Browse files
committedFeb 15, 2018
MAGETWO-87847: magento#11963: Magento 2.2 language switching not working on catalog and Product Pages magento#1143
- Merge Pull Request magento-engcom/magento2ce#1143 from p-bystritsky/magento2ce:ISSUE-11963 - Merged commits: 1. 2025c55 2. 719111f 3. ef1a7de 4. b0c224e 5. 4ca46ae
2 parents b1ac6c3 + 4ca46ae commit 3d279cf

File tree

6 files changed

+104
-6
lines changed

6 files changed

+104
-6
lines changed
 

‎app/code/Magento/Catalog/Controller/Category/View.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@ protected function _initCategory()
152152
*/
153153
public function execute()
154154
{
155-
if ($this->_request->getParam(\Magento\Framework\App\ActionInterface::PARAM_NAME_URL_ENCODED)) {
155+
if (!$this->_request->getParam('___from_store')
156+
&& $this->_request->getParam(self::PARAM_NAME_URL_ENCODED)
157+
) {
156158
return $this->resultRedirectFactory->create()->setUrl($this->_redirect->getRedirectUrl());
157159
}
158160
$category = $this->_initCategory();

‎app/code/Magento/Catalog/Controller/Product/View.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ public function execute()
7676
$productId = (int) $this->getRequest()->getParam('id');
7777
$specifyOptions = $this->getRequest()->getParam('options');
7878

79-
if ($this->getRequest()->isPost() && $this->getRequest()->getParam(self::PARAM_NAME_URL_ENCODED)) {
79+
if (!$this->_request->getParam('___from_store')
80+
&& $this->_request->isPost()
81+
&& $this->_request->getParam(self::PARAM_NAME_URL_ENCODED)
82+
) {
8083
$product = $this->_initProduct();
8184
if (!$product) {
8285
return $this->noProductRedirect();

‎dev/tests/integration/testsuite/Magento/Catalog/Controller/CategoryTest.php

+20
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\Catalog\Controller;
77

8+
use Magento\Framework\App\ActionInterface;
9+
810
/**
911
* Test class for \Magento\Catalog\Controller\Category.
1012
*
@@ -102,4 +104,22 @@ public function testViewActionInactiveCategory()
102104

103105
$this->assert404NotFound();
104106
}
107+
108+
/**
109+
* Test changing Store View on Category page.
110+
*
111+
* @magentoAppIsolation enabled
112+
* @magentoDbIsolation enabled
113+
* @magentoDataFixture Magento/Catalog/_files/enable_using_store_codes.php
114+
* @magentoDataFixture Magento/Store/_files/core_fixturestore.php
115+
* @magentoDataFixture Magento/Catalog/_files/category_with_two_stores.php
116+
*/
117+
public function testChangeStoreView()
118+
{
119+
$this->getRequest()->setMethod('POST');
120+
$this->getRequest()->setPostValue([ActionInterface::PARAM_NAME_URL_ENCODED => 1]);
121+
$this->dispatch('fixturestore/catalog/category/view/id/555?___from_store=default');
122+
$html = $this->getResponse()->getBody();
123+
$this->assertContains('<span>Fixture Store</span>', $html);
124+
}
105125
}

‎dev/tests/integration/testsuite/Magento/Catalog/Controller/ProductTest.php

+30-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
*/
1010
namespace Magento\Catalog\Controller;
1111

12+
use Magento\Framework\App\ActionInterface;
13+
use Magento\TestFramework\ObjectManager;
14+
1215
/**
1316
* @magentoAppIsolation enabled
1417
*/
@@ -25,7 +28,7 @@ protected function setUp()
2528
public function assert404NotFound()
2629
{
2730
parent::assert404NotFound();
28-
/** @var $objectManager \Magento\TestFramework\ObjectManager */
31+
/** @var $objectManager ObjectManager */
2932
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
3033
$this->assertNull($objectManager->get(\Magento\Framework\Registry::class)->registry('current_product'));
3134
}
@@ -49,7 +52,7 @@ protected function _getProductImageFile()
4952
*/
5053
public function testViewAction()
5154
{
52-
/** @var $objectManager \Magento\TestFramework\ObjectManager */
55+
/** @var $objectManager ObjectManager */
5356
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
5457
/**
5558
* @var $repository \Magento\Catalog\Model\ProductRepository
@@ -100,7 +103,7 @@ public function testViewAction()
100103
*/
101104
public function testViewActionConfigurable()
102105
{
103-
/** @var $objectManager \Magento\TestFramework\ObjectManager */
106+
/** @var $objectManager ObjectManager */
104107
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
105108
/**
106109
* @var $repository \Magento\Catalog\Model\ProductRepository
@@ -136,7 +139,7 @@ public function testViewActionRedirect()
136139
*/
137140
public function testGalleryAction()
138141
{
139-
/** @var $objectManager \Magento\TestFramework\ObjectManager */
142+
/** @var $objectManager ObjectManager */
140143
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
141144
/**
142145
* @var $repository \Magento\Catalog\Model\ProductRepository
@@ -186,4 +189,27 @@ public function testImageActionNoImage()
186189

187190
$this->assert404NotFound();
188191
}
192+
193+
/**
194+
* Test changing Store View on Product page.
195+
*
196+
* @magentoAppIsolation enabled
197+
* @magentoDbIsolation enabled
198+
* @magentoDataFixture Magento/Catalog/_files/enable_using_store_codes.php
199+
* @magentoDataFixture Magento/Catalog/_files/product_simple_multistore.php
200+
*/
201+
public function testChangeStoreView()
202+
{
203+
/** @var $objectManager ObjectManager */
204+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
205+
206+
/** @var $repository \Magento\Catalog\Model\ProductRepository */
207+
$repository = $objectManager->create(\Magento\Catalog\Model\ProductRepository::class);
208+
$product = $repository->get('simple');
209+
$this->getRequest()->setMethod('POST');
210+
$this->getRequest()->setPostValue([ActionInterface::PARAM_NAME_URL_ENCODED => 1]);
211+
$this->dispatch(sprintf('fixturestore/catalog/product/view/id/%s?___from_store=default', $product->getId()));
212+
$html = $this->getResponse()->getBody();
213+
$this->assertContains('<span>Fixture Store</span>', $html);
214+
}
189215
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\Framework\App\Config\ReinitableConfigInterface;
8+
use Magento\Framework\App\Config\Value;
9+
10+
/** @var \Magento\Framework\ObjectManagerInterface $objectManager */
11+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
12+
13+
/** @var Value $value */
14+
$value = $objectManager->create(Value::class);
15+
$value->setScope('default')
16+
->setScopeId(0)
17+
->setPath('web/url/use_store')
18+
->setValue(1)
19+
->save();
20+
21+
/** @var ReinitableConfigInterface $reinitableConfig */
22+
$reinitableConfig = $objectManager->get(ReinitableConfigInterface::class);
23+
$reinitableConfig->reinit();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\Framework\App\Config\ReinitableConfigInterface;
8+
use Magento\Framework\App\Config\Value;
9+
10+
/** @var \Magento\Framework\ObjectManagerInterface $objectManager */
11+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
12+
13+
/** @var Value $value */
14+
$value = $objectManager->create(Value::class);
15+
try {
16+
$value->load('web/url/use_store', 'path');
17+
$value->delete();
18+
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
19+
// do nothing
20+
}
21+
22+
/** @var ReinitableConfigInterface $reinitableConfig */
23+
$reinitableConfig = $objectManager->get(ReinitableConfigInterface::class);
24+
$reinitableConfig->reinit();

0 commit comments

Comments
 (0)
Please sign in to comment.