2015-11-02 2 views
2

Я новичок в magento, хочу создать рекламную форму продукта зарегистрированным пользователем. Я просто хочу добавить только номер телефона в поле адрес пользователя, установив флажок, если пользователь еще не добавил информацию об адресе фактурирования/доставки. Но, когда пользователь проверяет флажок телефона на добавление номера телефона по умолчанию для адреса фактуры/доставки (если не добавлен номер телефона уже), он возвращает ошибку.Magento Fatal error: вызов функции-члена save() для не-объекта

Fatal error: Call to a member function save() on a non-object 

enter image description here

Беллоу мой код;

if (isset($_POST['phone_check'])) { //save phone no to customer's address 
    $customerAddressId = $customer->getDefaultBilling(); 
    if ($customerAddressId) { 
     $customAddress = Mage::getModel('customer/address')->load($customerAddressId); 
     $customAddress->setTelephone($params['phone']); 
    } 
    try { 
     $customAddress->save(); //**Error occurred this line.** 
    } catch (Exception $ex) { 
     Zend_Debug::dump($ex->getMessage()); 
    } 
} 

N.B: The Problem occurred when the user want to advertising product before adding user's billing/shipping address field. So I just want to add only phone number to the address field. I have checked that there is no data in address_id, customer_id or customer_address_id under that user who already not added the billing/shipping address in "sales_flat_quote_address" or "sales_flat_order_address" table.

Пожалуйста, предложите мне что делать.

ответ

3

Там нет значения в адрес клиента в ваш адрес клиента. Добавьте адрес клиента, используя код ниже.

if (isset($_POST['phone_check'])) { //save phone no to customer's address 
    $_custom_address = array ('telephone' => $params['phone']); 
    $customAddress = Mage::getModel('customer/address'); 

    $customAddress->setData($_custom_address) 
     ->setCustomerId($customer->getId()) 
     ->setIsDefaultBilling('1') 
     ->setIsDefaultShipping('1') 
     ->setSaveInAddressBook('1'); 
    try { 
     $customAddress->save(); 
    } 
    catch (Exception $ex) { 
     Zend_Debug::dump($ex->getMessage()); 
    } 

    } 
0

Я предполагаю, что ваш код не делает его внутри вашего заявления if. Вы определяете только $customAddress. Вам нужно какое-то другое выражение, иначе вы запрашиваете save на том, чего не существует.

2
$customerAddressId = $customer->getDefaultBilling(); 
    if ($customerAddressId) { 
     $customAddress = Mage::getModel('customer/address')->load($customerAddressId); 
     $customAddress->setTelephone($params['phone']); 
    } 

если $ customerAddressId не определен, вы никогда не будете иметь ваши $ customAddress моделируют позже