我修改了默认的prestashop 1.5简报模块,并对IdentityController进行了以下覆盖
$this->context->smarty->assign('newsletter', (int)Module::getInstanceByName('modifiednewsletter')->active);
因此,此复选框似乎通过“我的个人信息”帐户链接设置/取消设置简报订阅。
一切正常,但ini_set("display_errors", 1);
我仍然在个人信息页面上收到以下php错误
Notice: Trying to get property of non-object in /var/www/prestashop/controllers/front/IdentityController.php on line 135 Call Stack: 0.0001 646712 1.
IdentityController.php的第135行是
$this->context->smarty->assign('newsletter', (int)Module::getInstanceByName('blocknewsletter')->active);
当我注释掉该行时,错误消失了,但我真的不想弄乱核心文件,有人能告诉我如何通过覆盖文件“取消设置”这个变量吗?
答案 0 :(得分:0)
在覆盖/ controllers / front / 中创建文件 IdentityController.php 。
现在将您遇到问题的方法复制到此文件中并使用错误代码注释行。
您还想删除文件工具/ smarty / index.php以强制智能模板重新编译!(Rookie错误)
为了您的信息,抛出此通知是因为您正在尝试访问不存在的对象名为“active”的变量。
这是访问公共属性:
$instance = new Module;
$instance->active;
这是调用类Module的公共静态方法:
Module::getInstanceByName('blocknewsletter');
在此调用中,没有真正创建对象,因为需要非。
值得庆幸的是将非现有变量传递给smarty模板并不是致命错误,应用程序可以继续运行而忽略了这个错误。