代码:
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();
错误:
严格标准:在第82行的C:\ xampp \ htdocs \ pjwebstoredev \ classes \ FrontController.php中从空值创建默认对象
答案 0 :(得分:2)
我假设你正在使用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();
}
}