![](/img/trans.png)
[英]Prestashop 1.7 Smarty engine passing variable from controller to .tpl file
[英]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.