Pereiti prie turinio
← Visos PrestaShop 9 klaidos

PrestaShop 9 klaidos

Call to undefined method Tools::jsonEncode() atnaujinus PrestaShop

Tools::jsonEncode() ir Tools::jsonDecode() pašalinti PrestaShop 8.0. Parduotuvės, kurios iš 1.7 šoka tiesiai į 9, šią klaidą sutinka senesniuose moduliuose. Pataisymas – viena eilutė.

Klaida
Call to undefined method Tools::jsonEncode()
Pašalinta
PrestaShop 8.0
Dažniausiai randama
Senesni moduliai, override failai

Kas nutiko

Tools::jsonEncode() ir Tools::jsonDecode() buvo ploni PHP funkcijų json_encode() ir json_decode() apvalkalai, likę iš laikų, kai PHP ne visada turėjo JSON palaikymą. PrestaShop 8.0 juos pašalino.

Parduotuvės, kurios iš 1.7 atnaujinamos tiesiai į 9, praleidžia 8 versiją, todėl iš karto susiduria su abiejų versijų pakeitimais. Ši klaida viena dažniausių, nes ją naudojo beveik kiekvienas modulis, kuris bendrauja su JavaScript ar saugo nustatymus JSON formatu.

Sprendimas

Kvieskite PHP funkcijas tiesiogiai. Jos priima tuos pačius argumentus:

// Buvo
$json = Tools::jsonEncode($data);
$data = Tools::jsonDecode($json, true);

// Dabar (veikia visose PrestaShop versijose)
$json = json_encode($data);
$data = json_decode($json, true);

Jei senas kodas tikėjosi, kad Tools::jsonDecode() grąžins objektą, kvieskite json_decode($json) be antro argumento – jis taip pat grąžina objektą.

Kur dar slepiasi

grep -rn "Tools::json" modules/ themes/ override/

Tie patys moduliai dažnai naudoja ir kitas 8.0 pašalintas pagalbines funkcijas, pavyzdžiui, Media::getJqueryPath() (žr. jQuery failai grąžina 404) ar Cookie::isLogged() (vietoj jo $this->context->customer->isLogged()). Jei parduotuvė dar 1.7 versijos, tikėkitės ir PHP 8 klaidų: PrestaShop 9 reikia PHP 8.1 ar naujesnės, žr. Call to undefined function each().

Raskite visas tokias vietas prieš atnaujindami

Kur yra vienas pašalintas kvietimas, paprastai yra ir daugiau. Mūsų nemokama PrestaShop 9 parengties patikra perskaito visų modulių, temos ir override failų kodą ir parodo kiekvieną problemą su failu ir eilute. Ji tik skaito, nieko nekeičia.

Gauti nemokamą patikrą

Nenorite taisyti patys? Parduotuves į PrestaShop 9 atnaujiname už fiksuotą kainą. Apie atnaujinimą