删除smarty - >在prestashop中从控制器分配变量

时间:2013-06-18 08:16:40

标签: php smarty prestashop

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

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

1 个答案:

答案 0 :(得分:0)

覆盖/ controllers / front / 中创建文件 IdentityController.php

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

您还想删除文件工具/ smarty / index.php以强制智能模板重新编译!(Rookie错误)

为了您的信息,抛出此通知是因为您正在尝试访问不存在的对象名为“active”的变量。

这是访问公共属性:

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

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

Module::getInstanceByName('blocknewsletter');

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

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