首页 > 解决方案 > 在模板中创建新的类别实例 - prestashop 1.7

问题描述

我知道我可以在这样的.tpl模板文件中使用类别类方法:

{assign var='all_categories' value=Category::getCategories()}

但是我如何才能在模板中实际初始化 Category 对象呢?所以该__construct功能运行。

我问这个是因为当我尝试使用一些 Category 类函数时,我得到了这个错误:

Using $this when not in object context

标签: prestashopprestashop-1.7

解决方案


没有办法通过 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)}


推荐阅读