Region.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Block\Adminhtml\Edit\Renderer;
  7. /**
  8. * Customer address region field renderer
  9. */
  10. class Region extends \Magento\Backend\Block\AbstractBlock implements
  11. \Magento\Framework\Data\Form\Element\Renderer\RendererInterface
  12. {
  13. /**
  14. * @var \Magento\Directory\Helper\Data
  15. */
  16. protected $_directoryHelper;
  17. /**
  18. * @param \Magento\Backend\Block\Context $context
  19. * @param \Magento\Directory\Helper\Data $directoryHelper
  20. * @param array $data
  21. */
  22. public function __construct(
  23. \Magento\Backend\Block\Context $context,
  24. \Magento\Directory\Helper\Data $directoryHelper,
  25. array $data = []
  26. ) {
  27. $this->_directoryHelper = $directoryHelper;
  28. parent::__construct($context, $data);
  29. }
  30. /**
  31. * Output the region element and javasctipt that makes it dependent from country element
  32. *
  33. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  34. * @return string
  35. *
  36. * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  37. */
  38. public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
  39. {
  40. if ($country = $element->getForm()->getElement('country_id')) {
  41. $countryId = $country->getValue();
  42. } else {
  43. return $element->getDefaultHtml();
  44. }
  45. $regionId = $element->getForm()->getElement('region_id')->getValue();
  46. $html = '<div class="field field-state required admin__field _required">';
  47. $element->setClass('input-text admin__control-text');
  48. $element->setRequired(true);
  49. $html .= $element->getLabelHtml() . '<div class="control admin__field-control">';
  50. $html .= $element->getElementHtml();
  51. $selectName = str_replace('region', 'region_id', $element->getName());
  52. $selectId = $element->getHtmlId() . '_id';
  53. $html .= '<select id="' .
  54. $selectId .
  55. '" name="' .
  56. $selectName .
  57. '" class="select required-entry admin__control-select" style="display:none">';
  58. $html .= '<option value="">' . __('Please select') . '</option>';
  59. $html .= '</select>';
  60. $html .= '<script>' . "\n";
  61. $html .= 'require(["prototype", "mage/adminhtml/form"], function(){';
  62. $html .= '$("' . $selectId . '").setAttribute("defaultValue", "' . $regionId . '");' . "\n";
  63. $html .= 'new regionUpdater("' .
  64. $country->getHtmlId() .
  65. '", "' .
  66. $element->getHtmlId() .
  67. '", "' .
  68. $selectId .
  69. '", ' .
  70. $this->_directoryHelper->getRegionJson() .
  71. ');' .
  72. "\n";
  73. $html .= '});';
  74. $html .= '</script>' . "\n";
  75. $html .= '</div></div>' . "\n";
  76. return $html;
  77. }
  78. }