Press "Enter" to skip to content

[PRESTASHOP 1.7] Problem z szablonem po przełączeniu na wersję PHP 7.x – FrontController.php i biblioteka font-awesome

Admin 0

Dla wersji PHP5.x – sklep działa prawidłowo. Przełączając wersję PHP na min. 7.0 – mamy białą stronę (do admina można się zalogować). Natomiast po włączeniu debugowania w dziale „Wydajność” błąd wygląda następująco:

tekstowo:

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/sbasklep/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 440
    at Jxblog->hookHeader(array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '5')) in Hook.php line 924
    at HookCore::coreCallHook(object(Jxblog), 'hookHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '5')) in Hook.php line 332
    at HookCore::callHookOn(object(Jxblog), 'displayHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '5')) 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

Problem jest związany z odmiennym przekazywaniem dynamicznych zmiennych w PHP dla obu tych wersji:

Interpretacja dla PHP5:

$this->{$asset['type']}();

Interpretacja dla PHP7:

$this->{$asset}['type']();

A przekładając na nasze – aby się pozbyć problemu w pliku:

classes/controller/FrontController.php

Zamień wystąpienie:

$this->$asset['type']($library, $asset['path'], $asset['params']);

na:

$this->{$asset['type']}($library, $asset['path'], $asset['params']);

 

żródło: https://github.com/PrestaShop/PrestaShop/pull/8636/commits/d7132fbc92f2e398f5f8e9f3452c2e8c2c5f123d

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Spokojnie to tylko awaria... jak sobie poradzić z upierdliwym wylogowywaniem…