Как решить эту ошибку в Prestashop - PullRequest
0 голосов
/ 17 марта 2012

Код:

public function init()
{
   global $cookie, $smarty, $cart, $iso, $defaultCountry, $protocol_link, $protocol_content, $link, $css_files, $js_files;

   if(!session_id()){
      if(!isset($_SESSION)){
         session_start();
      }
   }

   $cookie->id_cart=$_SESSION['pj_punchout_id'];

   if (self::$initialized)
      return;

   self::$initialized = true;

   $css_files = array();
   $js_files = array();

Ошибка:

Строгие стандарты: создание объекта по умолчанию из пустого значения в C: \ xampp \ htdocs \ pjwebstoredev \ classes \ FrontController.phpлиния 82

1 Ответ

2 голосов
/ 18 марта 2012

Я предполагаю, что вы используете Prestashop v1.4.Основная проблема, которую я вижу, состоит в том, что вы отредактировали один из основных файлов, поэтому большинство ставок не поддерживаются для возможности поддержки вашего кода в будущем.Если вы хотите аккуратно изменить поведение основных классов, то вам следует создать переопределение с именем /override/classes/FrontController.php со следующим содержимым:

class FrontController extends FrontControllerCore
{
    function init()
    {
        // Your additional custom init code goes here
        parent::init();
        // And/or additional custom init code goes here
    }
}

Это не такосновные проблемы, хотя, как мы дойдем до следующего этапа.Ошибка, которую вы видите, заключается в том, что вы пытаетесь использовать глобальную переменную $ cookie, но в какой-то момент времени, прежде чем для переменной будет установлено какое-либо значение (глобальная переменная cookie фактически инициализируется позже в самой функции, которую вы изменяли),Поскольку вам нужно манипулировать свойствами cookie, вы можете попытаться создать временный объект cookie, использовать его для управления cookie пользователя, а затем вызвать основной код, например,

class FrontController extends FrontControllerCore
{
    function init()
    {
        if ( !session_id() ) {
            if( !isset($_SESSION) ) {
              session_start();
            }
        }
        $cookieLifetime = (time() + (((int)Configuration::get('PS_COOKIE_LIFETIME_FO') > 0 ? (int)Configuration::get('PS_COOKIE_LIFETIME_FO') : 1)* 3600));
        $cookie = new Cookie('ps', '', $cookieLifetime);
        $cookie->id_cart=$_SESSION['pj_punchout_id'];

        parent::init();
    }
}
...