簡體   English   中英

刪除smarty->從prestashop中的控制器分配變量

[英]remove smarty -> assign variable from controller in 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);

當我注釋掉該行時,錯誤消失了,但是我真的不想弄亂核心文件,有人可以告訴我如何通過覆蓋文件“取消設置”此變量嗎?

override / controllers / front /中創建文件IdentityController.php

現在,將您遇到問題的方法復制到該文件中,並用錯誤代碼注釋行。

您還希望刪除文件tools / smarty / index.php以強制重新編譯smarty模板! (菜鳥錯誤)

僅供參考,因為您正在嘗試訪問不存在的對象的名為“活動”的變量,所以引發此通知。

這是在訪問公共屬性:

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

這正在調用類Module的public static方法:

Module::getInstanceByName('blocknewsletter');

在此調用中,實際上不需要創建任何對象,因為不需要。

幸運的是,將不存在的變量傳遞到smarty模板中並不是致命錯誤,應用程序可以繼續運行而忽略此錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM