1

我修改了默认的 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);

当我注释掉该行时,错误消失了,但我真的不想弄乱核心文件,谁能告诉我如何通过覆盖文件“取消设置”这个变量?

4

1 回答 1

0

override/controllers/front/创建文件IdentityController.php

现在将您遇到问题的方法复制到此文件中,并使用错误代码注释行。

您还想删除文件 tools/smarty/index.php 以强制重新编译 smarty 模板!(菜鸟失误)

为了您的信息,此通知被抛出,因为您试图访问不存在的对象的名为“活动”的变量。

这是访问公共属性:

$instance = new Module;
$instance->active;

这是调用类模块的公共静态方法:

Module::getInstanceByName('blocknewsletter');

在此调用中,没有真正创建对象,因为需要 non。

值得庆幸的是,将不存在的变量传递给 smarty 模板并不是致命错误,应用程序可以继续运行而忽略此错误。

于 2013-09-04T18:57:28.623 回答