保存到客户地址簿时的region_id值
-
16-10-2019 - |
题
以下是一些代码,可以将地址保存到客户地址簿中...我需要在region_id中投入什么价值,是否需要?
$_custom_address = array (
'firstname' => 'Honkey',
'lastname' => 'Joseph',
'street' => array (
'0' => 'Sample address part1 SECOND',
'1' => 'Sample address part2 SECOND',
),
'city' => 'Orlando',
'region_id' => '',
'region' => 'MN',
'postcode' => '31000',
'country_id' => 'US',
'telephone' => '0038531555444',
);
$customAddress = Mage::getModel('customer/address');
//$customAddress = new Mage_Customer_Model_Address();
$customAddress->setData($_custom_address)
->setCustomerId($customer->getId())
->setSaveInAddressBook('1');
try {
$customAddress->save();
}
catch (Exception $ex) {
Mage::log('Could not save customer',null,'caitlin.log');
Mage::log($ex->getMessage(),null,'caitlin.log');
}
解决方案
在客户地址的默认设置中,需要region_id。因此,如果您通过此代码添加了客户的地址,他们将无法对其进行编辑或使用它进行结帐,而无需首先更新地址以包括该区域。
关于哪个值应该是已选择区域的匹配ID。您可以通过查看网站的前端或查看表“ Directory_country_region”的数据库来找到这些。
区域属性使用类型的源模型:mage_customer_model_resource_address_attribute_source_region
哪个通过以下代码加载选项:
public function getAllOptions()
{
if (!$this->_options) {
$this->_options = Mage::getResourceModel('directory/region_collection')->load()->toOptionArray();
}
return $this->_options;
}