Skip to content

Commit

Permalink
Merge branch '2.4-develop' of github.com:magento-commerce/magento2ce …
Browse files Browse the repository at this point in the history
…into GL_PR_2021-10-05
  • Loading branch information
glo71317 committed Oct 13, 2021
2 parents 989b362 + 9c8d636 commit 367a474
Show file tree
Hide file tree
Showing 21 changed files with 1,252 additions and 31 deletions.
40 changes: 40 additions & 0 deletions app/code/Magento/Customer/ViewModel/Address/RegionProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Customer\ViewModel\Address;

use Magento\Directory\Model\RegionProvider as DirectoryRegionProvider;
use Magento\Framework\View\Element\Block\ArgumentInterface;

class RegionProvider implements ArgumentInterface
{

/**
* @var DirectoryRegionProvider
*/
private $directoryRegionProvider;

/**
* Constructor
*
* @param DirectoryRegionProvider $directoryRegionProvider
*/
public function __construct(
DirectoryRegionProvider $directoryRegionProvider
) {
$this->directoryRegionProvider = $directoryRegionProvider;
}

/**
* Get region data json
*
* @return string
*/
public function getRegionJson(): string
{
return $this->directoryRegionProvider->getRegionJson();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
<block class="Magento\Customer\Block\Form\Register" name="customer_form_register" template="Magento_Customer::form/register.phtml">
<arguments>
<argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
<argument name="region_provider" xsi:type="object">Magento\Customer\ViewModel\Address\RegionProvider</argument>
</arguments>
<container name="form.additional.info" as="form_additional_info"/>
<container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
<argument name="post_code_config" xsi:type="object">Magento\Customer\Block\DataProviders\PostCodesPatternsAttributeData</argument>
<argument name="view_model" xsi:type="object">Magento\Customer\ViewModel\Address</argument>
<argument name="region_provider" xsi:type="object">Magento\Customer\ViewModel\Address\RegionProvider</argument>
</arguments>
</block>
</referenceContainer>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
/** @var \Magento\Customer\ViewModel\Address $viewModel */
/** @var \Magento\Framework\Escaper $escaper */
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
/** @var \Magento\Customer\ViewModel\Address\RegionProvider $regionProvider */
$viewModel = $block->getViewModel();
$regionProvider = $block->getRegionProvider();
?>
<?php $_company = $block->getLayout()->createBlock(\Magento\Customer\Block\Widget\Company::class) ?>
<?php $_telephone = $block->getLayout()->createBlock(\Magento\Customer\Block\Widget\Telephone::class) ?>
Expand Down Expand Up @@ -222,13 +224,13 @@ $viewModel = $block->getViewModel();
}
},
"#country": {
"regionUpdater": {
"directoryRegionUpdater": {
"optionalRegionAllowed": <?= /* @noEscape */ $_displayAll ? 'true' : 'false' ?>,
"regionListId": "#region_id",
"regionInputId": "#region",
"postcodeId": "#zip",
"form": "#form-validate",
"regionJson": <?= /* @noEscape */ $viewModel->dataGetRegionJson() ?>,
"regionJson": <?= /* @noEscape */ $regionProvider->getRegionJson(); ?>,
"defaultRegion": "<?= (int) $block->getRegionId() ?>",
"countriesWithOptionalZip": <?= /* @noEscape */ $viewModel->dataGetCountriesWithOptionalZip(true) ?>
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ use Magento\Customer\Helper\Address;
$addressHelper = $block->getData('addressHelper');
/** @var \Magento\Directory\Helper\Data $directoryHelper */
$directoryHelper = $block->getData('directoryHelper');
/** @var \Magento\Customer\ViewModel\Address\RegionProvider $regionProvider */
$regionProvider = $block->getRegionProvider();
$formData = $block->getFormData();
?>
<?php $displayAll = $block->getConfig('general/region/display_all'); ?>
Expand Down Expand Up @@ -342,22 +344,22 @@ script;
<?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>
<?php if ($block->getShowAddressFields()): ?>
<?php
$regionJson = /* @noEscape */ $directoryHelper->getRegionJson();
$regionJson = /* @noEscape */ $regionProvider->getRegionJson();
$regionId = (int) $formData->getRegionId();
$countriesWithOptionalZip = /* @noEscape */ $directoryHelper->getCountriesWithOptionalZip(true);
?>
<script type="text/x-magento-init">
{
"#country": {
"regionUpdater": {
"directoryRegionUpdater": {
"optionalRegionAllowed": <?= /* @noEscape */ $displayAll ? 'true' : 'false' ?>,
"regionListId": "#region_id",
"regionInputId": "#region",
"postcodeId": "#zip",
"form": "#form-validate",
"regionJson": <?= $regionJson ?>,
"defaultRegion": <?= $regionId ?>,
"countriesWithOptionalZip": <?= $countriesWithOptionalZip ?>
"regionJson": <?= /* @noEscape */ $regionJson ?>,
"defaultRegion": <?= /* @noEscape */ $regionId ?>,
"countriesWithOptionalZip": <?= /* @noEscape */ $countriesWithOptionalZip ?>
}
}
}
Expand Down
76 changes: 76 additions & 0 deletions app/code/Magento/Directory/Model/RegionProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Directory\Model;

use Magento\Directory\Helper\Data as DataHelper;
use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;

class RegionProvider
{
/**
* @var RegionsArray
*/
private $regions;
/**
* @var DataHelper
*/
private $directoryHelper;
/**
* @var JsonSerializer
*/
private $jsonSerializer;

/**
* Constructor
*
* @param DataHelper $directoryHelper
* @param JsonSerializer $jsonSerializer
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function __construct(
DataHelper $directoryHelper,
JsonSerializer $jsonSerializer
) {
$this->directoryHelper= $directoryHelper;
$this->jsonSerializer = $jsonSerializer;
}

/**
* Get region data json
*
* @return string
*/
public function getRegionJson(): string
{
$regions = $this->getRegions();
return $this->jsonSerializer->serialize($regions);
}

/**
* Get regions array
*
* @return array
*/
private function getRegions() : array
{
if (!$this->regions) {
$regions = $this->directoryHelper->getRegionData();
$this->regions['config'] = $regions['config'];
unset($regions['config']);
foreach ($regions as $countryCode => $countryRegions) {
foreach ($countryRegions as $regionId => $regionData) {
$this->regions[$countryCode][] = [
'id' => $regionId,
'name' => $regionData['name'],
'code' => $regionData['code']
];
}
}
}
return $this->regions;
}
}
12 changes: 12 additions & 0 deletions app/code/Magento/Directory/view/frontend/requirejs-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

var config = {
map: {
'*': {
directoryRegionUpdater: 'Magento_Directory/js/region-updater'
}
}
};
Loading

0 comments on commit 367a474

Please sign in to comment.