15 class Region implements \Magento\Framework\Data\Form\Element\Renderer\RendererInterface
47 \
Magento\Directory\Model\CountryFactory $countryFactory,
48 \
Magento\Directory\Helper\Data $directoryHelper,
51 $this->_countryFactory = $countryFactory;
52 $this->_directoryHelper = $directoryHelper;
53 $this->_escaper = $escaper;
65 $isRegionRequired =
false;
66 if ($country =
$element->getForm()->getElement(
'country_id')) {
67 $countryId = $country->getValue();
68 $isRegionRequired = $this->_directoryHelper->isRegionRequired($countryId);
71 $html =
'<div class="field field-region ' . ($isRegionRequired ?
'required' :
'') .
'">' .
"\n";
73 $regionCollection =
false;
75 if (!isset(self::$_regionCollections[$countryId])) {
76 self::$_regionCollections[$countryId] = $this->_countryFactory->create()->setId(
78 )->getLoadedRegionCollection()->toOptionArray();
80 $regionCollection = self::$_regionCollections[$countryId];
83 $regionId = intval(
$element->getForm()->getElement(
'region_id')->getValue());
85 $htmlAttributes =
$element->getHtmlAttributes();
86 foreach ($htmlAttributes as $key =>
$attribute) {
88 unset($htmlAttributes[$key]);
97 $regionHtmlName =
$element->getName();
98 $regionIdHtmlName = str_replace(
'region',
'region_id', $regionHtmlName);
99 $regionHtmlId =
$element->getHtmlId();
100 $regionIdHtmlId = str_replace(
'region',
'region_id', $regionHtmlId);
102 if ($isRegionRequired) {
103 $element->addClass(
'required-entry');
106 if ($regionCollection && count($regionCollection) > 0) {
107 $elementClass =
$element->getClass();
108 $html .=
'<label class="label" for="' .
114 $html .=
'<div class="control">';
116 $html .=
'<select id="' . $regionIdHtmlId .
'" name="' . $regionIdHtmlName .
'" ' .
$element->serialize(
119 foreach ($regionCollection as $region) {
120 $selected = $regionId == $region[
'value'] ?
' selected="selected"' :
'';
121 $regionVal = 0 == $region[
'value'] ?
'' : (int)$region[
'value'];
122 $html .=
'<option value="' . $regionVal .
'"' . $selected .
'>' . $this->_escaper->escapeHtml(
126 $html .=
'</select>' .
"\n";
128 $html .=
'<input type="hidden" name="' . $regionHtmlName .
'" id="' . $regionHtmlId .
'" value=""/>';
133 $html .=
'<label class="label" for="' .
138 $html .=
'<div class="control">';
139 $html .=
'<input id="' .
149 $html .=
'<input type="hidden" name="' . $regionIdHtmlName .
'" id="' . $regionIdHtmlId .
'" value=""/>';
150 $html .=
'</div>' .
"\n";
152 $html .=
'</div>' .
"\n";
render(AbstractElement $element)
static $_regionCollections
__construct(\Magento\Directory\Model\CountryFactory $countryFactory, \Magento\Directory\Helper\Data $directoryHelper, \Magento\Framework\Escaper $escaper)