First create block file and put below code in this file.
<?php
namespace NameSpace\ModuleName\Block;
class Form extends \Magento\Directory\Block\Data
{
protected $_customerSession;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Directory\Helper\Data $directoryHelper,
\Magento\Framework\Json\EncoderInterface $jsonEncoder,
\Magento\Framework\App\Cache\Type\Config $configCacheType,
\Magento\Directory\Model\ResourceModel\Region\CollectionFactory $regionCollectionFactory,
\Magento\Directory\Model\ResourceModel\Country\CollectionFactory $countryCollectionFactory,
\Magento\Customer\Model\SessionFactory $customerSession,
array $data = []
) {
$this->_customerSession = $customerSession->create();
parent::__construct(
$context,
$directoryHelper,
$jsonEncoder,
$configCacheType,
$regionCollectionFactory,
$countryCollectionFactory,
$data
);
}
public function getCustomerLoggedIn()
{
if ($this->_customerSession->isLoggedIn()) {
return $this->_customerSession->getCustomer();
}
}
public function getFormData()
{
$data = $this->getData('form_data');
if ($data === null) {
$formData = $this->_customerSession->getCustomerFormData(true);
$data = new \Magento\Framework\DataObject();
if ($formData) {
$data->addData($formData);
$data->setCustomerData(1);
}
if (isset($data['region_id'])) {
$data['region_id'] = (int)$data['region_id'];
}
$this->setData('form_data', $data);
}
return $data;
}
public function getConfig($path)
{
return $this->_scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
}
}
Second create phtml file in your module
<?php
$countryList = $block->getCountries();
$regionList = $block->getRegion();
?>
<div>
<form class="form-contact"
action=""
id="form-contact"
method="post"
data-hasrequired="<?php echo __('* Required Fields') ?>"
data-mage-init='{"validation":{}}'>
<fieldset class="fieldset contact-info">
<div class="field region required">
<label for="region_id" class="label"><span><?php echo __('State/Province:') ?></span></label>
<div class="control">
<select id="region_id" name="region_id" title="<?php echo __('State/Province') ?>" class="validate-select" style="display:none;">
<option value=""><?php echo __('Please select a region, state or province.') ?></option>
</select>
<input type="text" id="region" name="region" value="<?php echo $block->getRegion() ?>" class="input-text <?php echo $block->escapeHtmlAttr($this->helper('Magento\Customer\Helper\Address')->getAttributeValidationClass('region')) ?>" style="display:none;">
</div>
</div>
<div class="field country required">
<label for="country" class="label"><span><?php echo $block->escapeHtml(__('Country:')) ?></span></label>
<div class="control">
<?php echo $block->getCountryHtmlSelect() ?>
</div>
</div>
</fieldset>
</form>
</div>
<script type="text/x-magento-init">
{
"#country": {
"regionUpdater": {
"optionalRegionAllowed": <?= /* @noEscape */ $block->getConfig('general/region/display_all') ? 'true' : 'false' ?>,
"regionListId": "#region_id",
"regionInputId": "#region",
"postcodeId": "#zip",
"form": "#form-validate",
"regionJson": <?= /* @noEscape */ $this->helper(\Magento\Directory\Helper\Data::class)->getRegionJson() ?>,
"defaultRegion": "<?= (int) $block->getRegionId() ?>",
"countriesWithOptionalZip": <?= /* @noEscape */ $this->helper(\Magento\Directory\Helper\Data::class)->getCountriesWithOptionalZip(true) ?>
}
}
}
</script>
how Can Fetch same City Name in magento2??
ReplyDeleteNice information. Thank you for sharing.
ReplyDeleteMagento 2 Support Service
Magento 2 Development Service