【发布时间】:2013-06-18 08:16:39
【问题描述】:
我修改了默认的 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);
当我注释掉该行时,错误消失了,但我真的不想弄乱核心文件,谁能告诉我如何通过覆盖文件“取消设置”这个变量?
【问题讨论】:
-
你能告诉我们你在哪里添加了这段代码吗?你用什么方法使用它,你还做什么?你调用父类的方法吗?
-
public function initContent() { parent::initContent(); $this->context->smarty->assign('newsletter', (int)Module::getInstanceByName('berlindisplaynewsletter')->active); }我确实调用了父级的方法,因为如果我不这样做,一半的页面不起作用,也许我应该在覆盖中使用新函数而不是initContent()?我对 php 和 prestashop 还很陌生,所以我只是在不知道自己在做什么的情况下完成了这一切......
标签: php smarty prestashop