2014-07-15 34 views
2

我正在尝试以编程方式为客户创建一个新地址,这个客户是前一段时间为我导入的客户。创建一个客户地址到已经存在的客户 - 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) { 
    } 
} 

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

回答

3

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

$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); 
    } 
} 
+0

建议设置 '街头'=>阵列($ _ S1,$ _s2,...) – cottton