Artykuł dotyczy PrestaShop w wersji PrestaShop 1.7.3.4.
Niekiedy użyty szablon wymusza korzystanie z tej wersji PrestaShop. Niestety jest ona „na pograniczu” kompatybilności z PHP 7.0. Tzn wersja PHP 5.6 działa bez problemu, jednak po przełączaniu na PHP 7.0 żadna strona sklepu nie dziala (biała strona) a po włączeniu trybu debugowania pojawia się błąd:
Whoops, looks like something went wrong. 1/1 ContextErrorException in FrontController.php line 1218: Notice: Array to string conversion in FrontController.php line 1218 at ErrorHandler->handleError('8', 'Array to string conversion', '/var/www/classes/controller/FrontController.php', '1218', array('libraries' => array('font-awesome'), 'library' => 'font-awesome', 'assets' => array(array('id' => 'font-awesome-css', 'type' => 'registerStylesheet', 'path' => '/themes/_libraries/font-awesome/css/font-awesome.min.css', 'params' => array('media' => 'all', 'priority' => '10'))), 'asset' => array('id' => 'font-awesome-css', 'type' => 'registerStylesheet', 'path' => '/themes/_libraries/font-awesome/css/font-awesome.min.css', 'params' => array('media' => 'all', 'priority' => '10')))) in FrontController.php line 1218 at FrontControllerCore->requireAssets(array('font-awesome')) in jxblog.php line 409 at Jxblog->hookHeader(array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '4')) in Hook.php line 924 at HookCore::coreCallHook(object(Jxblog), 'hookHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '4')) in Hook.php line 332 at HookCore::callHookOn(object(Jxblog), 'displayHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '4')) in Hook.php line 860 at HookCore::exec('displayHeader') in FrontController.php line 557 at FrontControllerCore->initContent() in IndexController.php line 37 at IndexControllerCore->initContent() in Controller.php line 253 at ControllerCore->run() in Dispatcher.php line 428 at DispatcherCore->dispatch() in index.php line 28
Wersja PHP7 może być konieczna np. do prawidłowego działania modułów płatności itp.
Jak poradzić sobie z tym błędem?
Na szczęscie rozwiązanie jest stosunkowo proste i zostało opisane tutaj.
Po prostu otwórz plik:
classes/controller/FrontController.php
Następnie znajdź funkcję requireAssets() – okolice 1218 linii
i zamień kod:
$this->$asset['type']($library, $asset['path'], $asset['params']);
Na:
$this->{$asset['type']}($library, $asset['path'], $asset['params']);
Po tej operacji sklep powinien działać w wersji PHP7. Oczywiście pod warunkiem, że dołączone do szablonu moduły też są kompatybilne z tą wersją PHP.
Jeśli Twój sklep nadal nastręcza problemów przy działaniu pod wyższą wersją interpretora PHP – zapraszamy do kontaktu:
grafika: wallpaperflare.com