Skip to content

Commit 5d811c3

Browse files
committed
github: 32996 Add RegionProvider to be responsible for region related directory data
1 parent 1d19c62 commit 5d811c3

File tree

3 files changed

+75
-51
lines changed

3 files changed

+75
-51
lines changed
Lines changed: 9 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,35 @@
11
<?php
22
/**
3-
* RegionProvider
4-
*
5-
* @copyright Copyright © 2021 Staempfli AG. All rights reserved.
6-
* @author juan.alonso@staempfli.com
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
75
*/
86

97
namespace Magento\Customer\ViewModel\Address;
108

11-
use Magento\Directory\Helper\Data as DataHelper;
12-
use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
9+
use Magento\Directory\Model\RegionProvider as DirectoryRegionProvider;
1310
use Magento\Framework\View\Element\Block\ArgumentInterface;
1411

1512
class RegionProvider implements ArgumentInterface
1613
{
1714

18-
19-
protected $regions = [];
20-
21-
/**
22-
* @var DataHelper
23-
*/
24-
private $directoryHelper;
2515
/**
26-
* @var JsonSerializer
16+
* @var DirectoryRegionProvider
2717
*/
28-
private $jsonSerializer;
29-
18+
private $directoryRegionProvider;
3019

3120
/**
3221
* Constructor
3322
*
34-
* @param DataHelper $directoryHelper
35-
* @param JsonSerializer $jsonSerializer
36-
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
23+
* @param DirectoryRegionProvider $directoryRegionProvider
3724
*/
3825
public function __construct(
39-
DataHelper $directoryHelper,
40-
JsonSerializer $jsonSerializer
26+
DirectoryRegionProvider $directoryRegionProvider
4127
) {
42-
$this->directoryHelper= $directoryHelper;
43-
$this->jsonSerializer = $jsonSerializer;
28+
$this->directoryRegionProvider = $directoryRegionProvider;
4429
}
4530

4631
public function getRegionJson() : string
4732
{
48-
$regions = $this->getRegions();
49-
return $this->jsonSerializer->serialize($regions);
33+
return $this->directoryRegionProvider->getRegionJson();
5034
}
51-
52-
53-
/**
54-
* @return array
55-
*/
56-
protected function getRegions() : array
57-
{
58-
if (!$this->regions) {
59-
$regions = $this->directoryHelper->getRegionData();
60-
$this->regions['config'] = $regions['config'];
61-
unset($regions['config']);
62-
foreach ($regions as $countryCode => $countryRegions) {
63-
foreach ($countryRegions as $regionId => $regionData) {
64-
$this->regions[$countryCode][] = [
65-
'id' => $regionId,
66-
'name' => $regionData['name'],
67-
'code' => $regionData['code']
68-
];
69-
}
70-
}
71-
72-
}
73-
return $this->regions;
74-
}
75-
7635
}

app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
<arguments>
1919
<argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
2020
<argument name="region_provider" xsi:type="object">Magento\Customer\ViewModel\Address\RegionProvider</argument>
21-
<argument name="show_address_fields" xsi:type="boolean">true</argument>
2221
</arguments>
2322
<container name="form.additional.info" as="form_additional_info"/>
2423
<container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Directory\Model;
8+
9+
use Magento\Directory\Helper\Data as DataHelper;
10+
use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
11+
12+
class RegionProvider
13+
{
14+
private $regions;
15+
/**
16+
* @var DataHelper
17+
*/
18+
private $directoryHelper;
19+
/**
20+
* @var JsonSerializer
21+
*/
22+
private $jsonSerializer;
23+
24+
/**
25+
* Constructor
26+
*
27+
* @param DataHelper $directoryHelper
28+
* @param JsonSerializer $jsonSerializer
29+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
30+
*/
31+
public function __construct(
32+
DataHelper $directoryHelper,
33+
JsonSerializer $jsonSerializer
34+
) {
35+
$this->directoryHelper= $directoryHelper;
36+
$this->jsonSerializer = $jsonSerializer;
37+
}
38+
39+
public function getRegionJson() : string
40+
{
41+
$regions = $this->getRegions();
42+
return $this->jsonSerializer->serialize($regions);
43+
}
44+
45+
/**
46+
* @return array
47+
*/
48+
protected function getRegions() : array
49+
{
50+
if (!$this->regions) {
51+
$regions = $this->directoryHelper->getRegionData();
52+
$this->regions['config'] = $regions['config'];
53+
unset($regions['config']);
54+
foreach ($regions as $countryCode => $countryRegions) {
55+
foreach ($countryRegions as $regionId => $regionData) {
56+
$this->regions[$countryCode][] = [
57+
'id' => $regionId,
58+
'name' => $regionData['name'],
59+
'code' => $regionData['code']
60+
];
61+
}
62+
}
63+
}
64+
return $this->regions;
65+
}
66+
}

0 commit comments

Comments
 (0)