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]

person Jakub Lacko    schedule 23.02.2017    source источник
comment
Я считаю, что это ошибка. Он изменен с 1,6 на 1,7. В версии 1.6 он по-прежнему запрашивает страну, даже если вы удалите ее из формата адреса страны.   -  person sadlyblue    schedule 23.02.2017


Ответы (4)


Поле страны в адресной таблице PrestaShop является обязательным, поэтому удалить его из формата адреса невозможно.

Пожалуйста, проверьте структуру таблицы ps_address в базе данных вашего магазина для получения более подробной информации.

person Knowband Plugins    schedule 24.02.2017

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

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

В классах \ form \ 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();
}
person hocklai8    schedule 23.10.2017
comment
Это исправление также сработало у меня в PrestaShop V: 7.1.33. - person AreaEuro; 15.04.2021

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

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

person Dhirender    schedule 24.02.2017

Ошибка говорят: нет страны! Простой ответ, просто добавьте сюда округ:  добавить страну

и

добавить сюда ту же страну

person Darius    schedule 25.01.2019