2017-02-23 208 views
0

Я получаю эту ошибку, когда пытаюсь сохранить мой адрес в Prestashop 1.7, я изменил формат адреса в backend и после удаления страны из формата я не могу сохранить адрес, может кто-то пожалуйста, помогите мне с этим?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

В соответствии с приведенным выше сообщением системе требуется идентификатор страны для адреса от пользователя, даже если вы удалили страну из формата адреса.

В классе/Address.php файл, вы можете ясно видеть, что в переменной определения столбца, id_country поле является обязательным, а также значение должно быть положительным целым числом.

0

Обнаружена та же проблема на Prestashop 1.7.2.2.

Похоже, что при добавлении нового адреса он не был сохранен в БД, чтобы вернуть автоматически увеличивающийся id id_address для функции isUsed() для правильной оценки.

В классах \ Форма \ 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(); 
}