/** * Set region to the attribute * * @param \Magento\Framework\DataObject $object * @return $this */ public function beforeSave($object) { if (is_numeric($object->getRegion())) { $region = $this->_regionFactory->create()->load((int) $object->getRegion()); if ($region) { $object->setRegionId($region->getId()); $object->setRegion($region->getCode()); } } return $this; }
/** * Prepare object for save * * @param \Magento\Framework\DataObject $object * @return $this */ public function beforeSave($object) { $region = $object->getData('region'); if (is_numeric($region)) { $regionModel = $this->_createRegionInstance(); $regionModel->load($region); if ($regionModel->getId() && $object->getCountryId() == $regionModel->getCountryId()) { $object->setRegionId($regionModel->getId())->setRegion($regionModel->getName()); } } return $this; }
/** * Adopt specified address object to be compatible with Magento * * @param \Magento\Framework\DataObject $address * @return void */ protected function _applyStreetAndRegionWorkarounds(\Magento\Framework\DataObject $address) { // merge street addresses into 1 if ($address->hasStreet2()) { $address->setStreet(implode("\n", [$address->getStreet(), $address->getStreetLine(2)])); $address->unsStreet2(); } // attempt to fetch region_id from directory if ($address->getCountryId() && $address->getRegion()) { $regions = $this->_countryFactory->create()->loadByCode($address->getCountryId())->getRegionCollection()->addRegionCodeOrNameFilter($address->getRegion())->setPageSize(1); foreach ($regions as $region) { $address->setRegionId($region->getId()); $address->setExportedKeys(array_merge($address->getExportedKeys(), ['region_id'])); break; } } }