Region.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Model\ResourceModel\Address\Attribute\Backend;
  7. /**
  8. * Address region attribute backend
  9. *
  10. * @author Magento Core Team <core@magentocommerce.com>
  11. */
  12. class Region extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
  13. {
  14. /**
  15. * @var \Magento\Directory\Model\RegionFactory
  16. */
  17. protected $_regionFactory;
  18. /**
  19. * @param \Magento\Directory\Model\RegionFactory $regionFactory
  20. */
  21. public function __construct(\Magento\Directory\Model\RegionFactory $regionFactory)
  22. {
  23. $this->_regionFactory = $regionFactory;
  24. }
  25. /**
  26. * Prepare object for save
  27. *
  28. * @param \Magento\Framework\DataObject $object
  29. * @return $this
  30. */
  31. public function beforeSave($object)
  32. {
  33. $region = $object->getData('region');
  34. if (is_numeric($region)) {
  35. $regionModel = $this->_createRegionInstance();
  36. $regionModel->load($region);
  37. if ($regionModel->getId() && $object->getCountryId() == $regionModel->getCountryId()) {
  38. $object->setRegionId($regionModel->getId())->setRegion($regionModel->getName());
  39. }
  40. }
  41. return $this;
  42. }
  43. /**
  44. * @return \Magento\Directory\Model\Region
  45. */
  46. protected function _createRegionInstance()
  47. {
  48. return $this->_regionFactory->create();
  49. }
  50. }