Jump to content
  • 0

[1.7.4] Właściwość Adress -> phone jest pusta.


habratto

Question

Witam forumowiczów. 

Na wstępie informuję że ten sklep na prestashop stworzyłem jakiś rok temu, ze znikomą wiedzą w temacie i z pomocą tego forum i google udało się to zrobić.
Kilka dni temu po przejściu z koszyka do "zamówienia" zaczął pojawiać się błąd 500 więc zrobiłem aktualizacje presty, modułów, poczytałem logi i okazało się że PHP przekracza limit pamięci 128M.
Zwiększyłem ten limit do 256 i błędu 500 już nie ma, natomiast to co jest przekracza moją znajomość programistyczną i zmuszony jestem szukać pomocy zakładając temat.

Zmiana skórki na domyślną sprawia że błędu nie ma ale pojawia się "strony nie odnaleziono".

Oto co się tam pokazuje po włączeniu debuggera:
 

Quote

[PrestaShopException]

Właściwość Address->phone jest pusta.
at line 954 in file classes/ObjectModel.php

949. } 950. 951. $message = $this->validateField($field, $this->$field); 952. if ($message !== true) { 953. if ($die) { 954. throw new PrestaShopException($message); 955. } 956. return $error_return ? $message : false; 957. } 958. } 959.

ObjectModelCore->validateFields - [line 272 - classes/ObjectModel.php]

267. * @return array All object fields 268. * @throws PrestaShopException 269. */ 270. public function getFields() 271. { 272. $this->validateFields(); 273. $fields = $this->formatFields(self::FORMAT_COMMON); 274. 275. // For retro compatibility 276. if (Shop::isTableAssociated($this->def['table'])) { 277. $fields = array_merge($fields, $this->getFieldsShop());

ObjectModelCore->getFields - [line 48 - classes/AddressChecksumCore.php]

43. if (!$address->id) { 44. return sha1('No address set'); 45. } 46. 47. $uniqId = ''; 48. $fields = $address->getFields(); 49. foreach ($fields as $name => $value) { 50. $uniqId .= $value.self::SEPARATOR; 51. } 52. $uniqId = rtrim($uniqId, self::SEPARATOR); 53.

AddressChecksumCore->generateChecksum - [line 52 - classes/checkout/CartChecksum.php] - [1 Arguments]

47. $uniq_id .= $cart->id_currency; 48. $uniq_id .= $this->separator; 49. $uniq_id .= $cart->id_lang; 50. $uniq_id .= $this->separator; 51. 52. $uniq_id .= $this->addressChecksum->generateChecksum(new Address($cart->id_address_delivery)); 53. $uniq_id .= $this->separator; 54. $uniq_id .= $this->addressChecksum->generateChecksum(new Address($cart->id_address_invoice)); 55. $uniq_id .= $this->separator; 56. 57. $products = $cart->getProducts($refresh = true);

CartChecksumCore->generateChecksum - [line 225 - controllers/front/OrderController.php] - [1 Arguments]

220. ), 221. ); 222. 223. $checksum = null; 224. } else { 225. $checksum = $this->cartChecksum->generateChecksum($cart); 226. } 227. 228. // Prepare all other addresses' warning messages (if relevant). 229. // These messages are displayed when changing the selected address. 230. $allInvalidAddressIds = $addressValidator->validateCustomerAddresses($customer, $this->context->language);

OrderControllerCore->restorePersistedData - [line 260 - controllers/front/OrderController.php] - [1 Arguments]

255. { 256. if (Configuration::isCatalogMode()) { 257. Tools::redirect('index.php'); 258. } 259. 260. $this->restorePersistedData($this->checkoutProcess); 261. $this->checkoutProcess->handleRequest( 262. Tools::getAllValues() 263. ); 264. 265. $presentedCart = $this->cart_presenter->present($this->context->cart);

Podkreślam że od roku nie wprowadzałem tam żadnych zmian poza produktowymi.
Co robić? Gdzie szukać rozwiązania? Proszę o pomoc.

ps. proszę moderacje o przeniesienie tego posta do działu Wsparcia i pomocy :) ja chyba tego nie mogę zrobić.

Edited by habratto
dodanie wersji prestashop w temacie i prośba o przeniesienie posta (see edit history)
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

przeszukując pliki pod hasłem "phone" natrafiłem na kilka wierszy które mogą mieć coś z tym wspólnego.

np.: classes/Address.php, zawiera wiersz: 

Quote

'phone' => array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'size' => 32),

a w plikach które mam zachowane z poprzednich wersji jest:

Quote

'phone' => array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'required' => true, 'size' => 32),

Nie chcę w tym grzebać bo się nie znam a nie mam za bardzo czasu na poważne testy ze stawianiem nowego sklepu lokalnie.

Przez backoffice nie ma opcji modyfikacji tego (przynajmniej w zarządzaniu klientami).

Link to comment
Share on other sites

  • 0

Dzięki za odpowiedź.

więc w edycji kraju wygląda tak:
 

Quote

firstname lastname
company
vat_number
address1
address2
postcode city
phone

Po usunięciu phone faktycznie nie można go wpisać przy zamówieniu, jednak błąd 500 jest przy przejściu dalej.

Jak jest phone na liście, to pojawia się przy zamówieniu jako niewymagany (przy wpisaniu jest ok/bez wpisania błąd 500)

 

W zarządzaniu klientami mam tylko Oferty partnerskie.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...