Updater.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Tax\Block\Adminhtml\Frontend\Region;
  7. use Magento\Framework\Data\Form\Element\AbstractElement;
  8. class Updater extends \Magento\Config\Block\System\Config\Form\Field
  9. {
  10. /**
  11. * @var \Magento\Directory\Helper\Data
  12. */
  13. protected $_directoryHelper;
  14. /**
  15. * @param \Magento\Backend\Block\Template\Context $context
  16. * @param \Magento\Directory\Helper\Data $directoryHelper
  17. * @param array $data
  18. */
  19. public function __construct(
  20. \Magento\Backend\Block\Template\Context $context,
  21. \Magento\Directory\Helper\Data $directoryHelper,
  22. array $data = []
  23. ) {
  24. $this->_directoryHelper = $directoryHelper;
  25. parent::__construct($context, $data);
  26. }
  27. /**
  28. * @param AbstractElement $element
  29. * @return string
  30. */
  31. protected function _getElementHtml(AbstractElement $element)
  32. {
  33. $html = parent::_getElementHtml($element);
  34. $js = '<script>
  35. require(["prototype", "mage/adminhtml/form"], function(){
  36. updater = new RegionUpdater("tax_defaults_country", "none", "tax_defaults_region", %s, "nullify");
  37. if(updater.lastCountryId) {
  38. var tmpRegionId = $("tax_defaults_region").value;
  39. var tmpCountryId = updater.lastCountryId;
  40. updater.lastCountryId=false;
  41. updater.update();
  42. updater.lastCountryId = tmpCountryId;
  43. $("tax_defaults_region").value = tmpRegionId;
  44. } else {
  45. updater.update();
  46. }
  47. });
  48. </script>';
  49. $html .= sprintf($js, $this->_directoryHelper->getRegionJson());
  50. return $html;
  51. }
  52. }