创建一个客户地址,已经存在的客户- Magento


Create a customer address to already exist customer - Magento

我正在尝试以编程方式为客户创建一个新地址,该地址是不久前为我导入的。

我代码:

//All variables about customer address info are filled
$customerModel = Mage::getModel('customer/customer');
$customer = $customerModel->setWebsiteId(1)->loadByEmail($_email);
if($customer->getId()) {
    $addressData =  array (
        'firstname' => $customer->getFirstname(),
        'lastname' => $customer->getLastname(),
        'street' => "$_s1
$_s2
$_s3
$_s4",
        'city' => $_city,
        'country_id' => 'BR',
        'region_id' => $_regionid,
        'postcode' => $_cep,
        'telephone' => $_tel,
        'celular' => $_cel,
        'is_default_billing' => 1,
        'is_default_shipping' => 1
    );
    $address = Mage::getModel('customer/address');
    $address->addData($addressData);
    $customer->addAddress($address);
    try {
        print_r($addressData);
        $customer->save();
    }
    catch (Exception $e) {
    }
}

对象加载'$customer'不是我需要的:一个完整的客户对象。任何想法?

您必须以不同的方式保存客户地址,以下是地址保存代码。

$customerAddress = Mage::getModel('customer/address');
$customerAddress->setData($addressData)
        ->setCustomerId($customer->getId())
        ->setSaveInAddressBook('1');
$customerAddress->save();

完整代码如下:

$customerModel = Mage::getModel('customer/customer');
$customer = $customerModel->setWebsiteId(1)->loadByEmail($_email);
if($customer->getId()) {
    $addressData =  array (
        'firstname' => $customer->getFirstname(),
        'lastname' => $customer->getLastname(),
        'street' => "$_s1
$_s2
$_s3
$_s4",
        'city' => $_city,
        'country_id' => 'BR',
        'region_id' => $_regionid,
        'postcode' => $_cep,
        'telephone' => $_tel,
        'celular' => $_cel,
        'is_default_billing' => 1,
        'is_default_shipping' => 1
    );
    $customerAddress = Mage::getModel('customer/address');
    $customerAddress->setData($addressData)
        ->setCustomerId($customer->getId())
        ->setSaveInAddressBook('1');
    $customerAddress->save();
    //And reload customer object
    $customer = Mage::getModel('customer/customer')->load($customer->getId());
    //Check customer data
    print_r($customer->getData());
    //Check addresses
    foreach($customer->getAddresses() as $address)
    {
        print_r($address);
    }
}