Skip to content

Commit cd64011

Browse files
merge magento-commerce/2.4-develop into magento-honey-badgers/PWA-2137-graphql-scalar-typecast
2 parents 62d4261 + 207c959 commit cd64011

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+791
-1873
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Customer\ViewModel\Address;
8+
9+
use Magento\Directory\Model\RegionProvider as DirectoryRegionProvider;
10+
use Magento\Framework\View\Element\Block\ArgumentInterface;
11+
12+
class RegionProvider implements ArgumentInterface
13+
{
14+
15+
/**
16+
* @var DirectoryRegionProvider
17+
*/
18+
private $directoryRegionProvider;
19+
20+
/**
21+
* Constructor
22+
*
23+
* @param DirectoryRegionProvider $directoryRegionProvider
24+
*/
25+
public function __construct(
26+
DirectoryRegionProvider $directoryRegionProvider
27+
) {
28+
$this->directoryRegionProvider = $directoryRegionProvider;
29+
}
30+
31+
/**
32+
* Get region data json
33+
*
34+
* @return string
35+
*/
36+
public function getRegionJson(): string
37+
{
38+
return $this->directoryRegionProvider->getRegionJson();
39+
}
40+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<block class="Magento\Customer\Block\Form\Register" name="customer_form_register" template="Magento_Customer::form/register.phtml">
1818
<arguments>
1919
<argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
20+
<argument name="region_provider" xsi:type="object">Magento\Customer\ViewModel\Address\RegionProvider</argument>
2021
</arguments>
2122
<container name="form.additional.info" as="form_additional_info"/>
2223
<container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
2323
<argument name="post_code_config" xsi:type="object">Magento\Customer\Block\DataProviders\PostCodesPatternsAttributeData</argument>
2424
<argument name="view_model" xsi:type="object">Magento\Customer\ViewModel\Address</argument>
25+
<argument name="region_provider" xsi:type="object">Magento\Customer\ViewModel\Address\RegionProvider</argument>
2526
</arguments>
2627
</block>
2728
</referenceContainer>

app/code/Magento/Customer/view/frontend/templates/address/edit.phtml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
/** @var \Magento\Customer\ViewModel\Address $viewModel */
99
/** @var \Magento\Framework\Escaper $escaper */
1010
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
11+
/** @var \Magento\Customer\ViewModel\Address\RegionProvider $regionProvider */
1112
$viewModel = $block->getViewModel();
13+
$regionProvider = $block->getRegionProvider();
1214
?>
1315
<?php $_company = $block->getLayout()->createBlock(\Magento\Customer\Block\Widget\Company::class) ?>
1416
<?php $_telephone = $block->getLayout()->createBlock(\Magento\Customer\Block\Widget\Telephone::class) ?>
@@ -222,13 +224,13 @@ $viewModel = $block->getViewModel();
222224
}
223225
},
224226
"#country": {
225-
"regionUpdater": {
227+
"directoryRegionUpdater": {
226228
"optionalRegionAllowed": <?= /* @noEscape */ $_displayAll ? 'true' : 'false' ?>,
227229
"regionListId": "#region_id",
228230
"regionInputId": "#region",
229231
"postcodeId": "#zip",
230232
"form": "#form-validate",
231-
"regionJson": <?= /* @noEscape */ $viewModel->dataGetRegionJson() ?>,
233+
"regionJson": <?= /* @noEscape */ $regionProvider->getRegionJson(); ?>,
232234
"defaultRegion": "<?= (int) $block->getRegionId() ?>",
233235
"countriesWithOptionalZip": <?= /* @noEscape */ $viewModel->dataGetCountriesWithOptionalZip(true) ?>
234236
}

app/code/Magento/Customer/view/frontend/templates/form/register.phtml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ use Magento\Customer\Helper\Address;
1414
$addressHelper = $block->getData('addressHelper');
1515
/** @var \Magento\Directory\Helper\Data $directoryHelper */
1616
$directoryHelper = $block->getData('directoryHelper');
17+
/** @var \Magento\Customer\ViewModel\Address\RegionProvider $regionProvider */
18+
$regionProvider = $block->getRegionProvider();
1719
$formData = $block->getFormData();
1820
?>
1921
<?php $displayAll = $block->getConfig('general/region/display_all'); ?>
@@ -342,22 +344,22 @@ script;
342344
<?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>
343345
<?php if ($block->getShowAddressFields()): ?>
344346
<?php
345-
$regionJson = /* @noEscape */ $directoryHelper->getRegionJson();
347+
$regionJson = /* @noEscape */ $regionProvider->getRegionJson();
346348
$regionId = (int) $formData->getRegionId();
347349
$countriesWithOptionalZip = /* @noEscape */ $directoryHelper->getCountriesWithOptionalZip(true);
348350
?>
349351
<script type="text/x-magento-init">
350352
{
351353
"#country": {
352-
"regionUpdater": {
354+
"directoryRegionUpdater": {
353355
"optionalRegionAllowed": <?= /* @noEscape */ $displayAll ? 'true' : 'false' ?>,
354356
"regionListId": "#region_id",
355357
"regionInputId": "#region",
356358
"postcodeId": "#zip",
357359
"form": "#form-validate",
358-
"regionJson": <?= $regionJson ?>,
359-
"defaultRegion": <?= $regionId ?>,
360-
"countriesWithOptionalZip": <?= $countriesWithOptionalZip ?>
360+
"regionJson": <?= /* @noEscape */ $regionJson ?>,
361+
"defaultRegion": <?= /* @noEscape */ $regionId ?>,
362+
"countriesWithOptionalZip": <?= /* @noEscape */ $countriesWithOptionalZip ?>
361363
}
362364
}
363365
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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+
/**
15+
* @var RegionsArray
16+
*/
17+
private $regions;
18+
/**
19+
* @var DataHelper
20+
*/
21+
private $directoryHelper;
22+
/**
23+
* @var JsonSerializer
24+
*/
25+
private $jsonSerializer;
26+
27+
/**
28+
* Constructor
29+
*
30+
* @param DataHelper $directoryHelper
31+
* @param JsonSerializer $jsonSerializer
32+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
33+
*/
34+
public function __construct(
35+
DataHelper $directoryHelper,
36+
JsonSerializer $jsonSerializer
37+
) {
38+
$this->directoryHelper= $directoryHelper;
39+
$this->jsonSerializer = $jsonSerializer;
40+
}
41+
42+
/**
43+
* Get region data json
44+
*
45+
* @return string
46+
*/
47+
public function getRegionJson(): string
48+
{
49+
$regions = $this->getRegions();
50+
return $this->jsonSerializer->serialize($regions);
51+
}
52+
53+
/**
54+
* Get regions array
55+
*
56+
* @return array
57+
*/
58+
private function getRegions() : array
59+
{
60+
if (!$this->regions) {
61+
$regions = $this->directoryHelper->getRegionData();
62+
$this->regions['config'] = $regions['config'];
63+
unset($regions['config']);
64+
foreach ($regions as $countryCode => $countryRegions) {
65+
foreach ($countryRegions as $regionId => $regionData) {
66+
$this->regions[$countryCode][] = [
67+
'id' => $regionId,
68+
'name' => $regionData['name'],
69+
'code' => $regionData['code']
70+
];
71+
}
72+
}
73+
}
74+
return $this->regions;
75+
}
76+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
var config = {
7+
map: {
8+
'*': {
9+
directoryRegionUpdater: 'Magento_Directory/js/region-updater'
10+
}
11+
}
12+
};

0 commit comments

Comments
 (0)