我知道有类似的问题,但没有一个能解决我的问题。
我在/ override / classes / controller /
中放置了一个FrontController.php文件它包含以下代码:
Class FrontController extends FrontControllerCore{
public function displayHeader(){
if(!self::$initialized) $this->init();
$this->context->smarty->assign('test_ok','okok');
return parent::displayHeader();
}
}//end FrontController
从我的自定义主题,在header.tpl中,我放置了一个像这样的测试代码
{$test_ok}
得到这个:
注意:第147行的[...] / cache / smarty / compile / 81 / a3 / 76 / 81a3760f9c0cb8c9ff677a0e7b59d8962cdaaeda.file.header.tpl.php中的未定义索引:test_ok
注意:尝试在第147行的[...] / cache / smarty / compile / 81 / a3 / 76 / 81a3760f9c0cb8c9ff677a0e7b59d8962cdaaeda.file.header.tpl.php中获取非对象的属性
我还尝试直接在FrontControllerCore.php中分配这个smarty var(仅用于测试),但得到了同样的注意。
有什么想法吗?
答案 0 :(得分:3)
创建覆盖时,需要重新创建类索引。
为此,只需删除文件/cache/class_index.php
然后重新创建它(确保chmod
它到666
所以Prestashop可以写它(你也可以删除文件的内容当然)。
答案 1 :(得分:1)
在Prestashop 1.5及更高版本中,函数 displayHeader() 不会被称为,因为它被标记为已弃用。因此,当你覆盖一个没有调用的函数时,什么都不会发生,你输出结果就没有了。
正如我在此处所见,来自user1145716的回答对您的情况更有帮助,您可以覆盖 initHeader()功能以查看输出结果。
答案 2 :(得分:0)