prestashop - 在模板中创建新的类别实例 - prestashop 1.7
问题描述
我知道我可以在这样的.tpl
模板文件中使用类别类方法:
{assign var='all_categories' value=Category::getCategories()}
但是我如何才能在模板中实际初始化 Category 对象呢?所以该__construct
功能运行。
我问这个是因为当我尝试使用一些 Category 类函数时,我得到了这个错误:
Using $this when not in object context
解决方案
没有办法通过 tpl 文件来实例化一个类别,一些类有一个公共静态方法来做到这一点,例如,像Db
类,这有一个称为getInstance
,不幸的是,默认情况下,类中不存在类似的东西Category
。你应该在一个 php 文件中实例化它并发送给 Smarty,或者修改类添加一个对象:
public static $instance = array();
和方法:
public static function getInstance($id_category)
{
if (isset(self::$instance[$id_category])) {
return self::$instance[$id_category];
}
return self::$instance[$id_category] = new Category($id_category);
}
现在您可以在您的 tpl 中使用:
{assign var='category' value=Category::getInstance(3)}
推荐阅读
- sql-server - MS Access 2019 - SQL Server 2017 - 无法更新记录集
- python - 将数据从 JSON 转换为 pandas 数据框
- python-3.x - 如何在 PyQt5 中使用 QStandardItemModel 将 JSON 文件中的数据显示到 ListView 中?
- python - Conda 不断打开这个 Python 解释器
- excel - 在 VBA 中复制 Excel 函数
- jquery - JQuery Post 将 json 数据更改为查询字符串
- node.js - 无法使用羽毛身份验证进行身份验证
- stanford-nlp - 如何用规则文件指定的单词替换匹配的文本?
- python - 如何让 Chroniker 在 cronjob 中更新我的表?
- python - 为什么在使用 django 时会得到重复的日志信息?