2017-02-23 96 views
0

我收到這個錯誤,當我試圖保存我的地址在Prestashop 1.7,我已經改變了後臺的地址格式,並從格式中刪除國家後,我無法保存地址,可有人請幫助我?Prestashop 1.7無法保存訂單地址

圖片示出了錯誤:

[PrestaShopException] 

Property Address->id_country is empty 
at line 915 in file classes/ObjectModel.php 

910.    } 
911. 
912.    $message = $this->validateField($field, $this->$field); 
913.    if ($message !== true) { 
914.     if ($die) { 
915.      throw new PrestaShopException($message); 
916.     } 
917.     return $error_return ? $message : false; 
918.    } 
919.   } 
920. 
ObjectModelCore->validateFields - [line 248 - classes/ObjectModel.php] 
ObjectModelCore->getFields - [line 489 - classes/ObjectModel.php] 
ObjectModelCore->add - [line 176 - classes/Address.php] - [2 Arguments] 
AddressCore->add - [line 447 - classes/ObjectModel.php] - [2 Arguments] 
ObjectModelCore->save - [line 76 - classes/form/CustomerAddressPersister.php] 
CustomerAddressPersisterCore->save - [line 144 - classes/form/CustomerAddressForm.php] - [2 Arguments] 
CustomerAddressFormCore->submit - [line 111 - classes/checkout/CheckoutAddressesStep.php] 
CheckoutAddressesStepCore->handleRequest - [line 57 - classes/checkout/CheckoutProcess.php] - [1 Arguments] 
CheckoutProcessCore->handleRequest - [line 199 - controllers/front/OrderController.php] - [1 Arguments] 
OrderControllerCore->initContent - [line 201 - classes/controller/Controller.php] 
ControllerCore->run - [line 366 - classes/Dispatcher.php] 
DispatcherCore->dispatch - [line 28 - index.php] 
+0

我相信這是一個錯誤。它從1.6改爲1.7。即使您將其從國家/地區格式中刪除,它仍然會要求國家/地區1.6。 – sadlyblue

回答

0

需要在的PrestaShop的地址表中的國家場,因此它不可能從地址格式將其刪除。

請檢查商店數據庫中ps_address表的結構以獲取更多詳細信息。

0

根據以上消息,即使您已經從地址格式中刪除了國家/地區,系統仍需要用戶的國家/地區ID。

類/ Address.php文件,可以清楚地看到,在列定義變量,id_country是必需字段以及值應該是正整數。

0

在Prestashop 1.7.2.2上遇到同樣的問題。

似乎是在添加新地址時,它並未持久保存到數據庫中,以便爲isUsed()函數返回id_address的自動遞增id以正確評估。

在類\表格\ CustomerAddressPersister.php

public function save(Address $address, $token) 
{ 
    if (!$this->authorizeChange($address, $token)) { 
     return false; 
    } 

    $address->id_customer = $this->customer->id; 
    $address->save(); // <-- Add this 

    if ($address->isUsed()) { 
     $old_address = new Address($address->id); 
     $address->id = $address->id_address = null; 

     return $address->save() && $old_address->delete(); 
    } 

    return $address->save(); 
}