在模板中创建新的类别实例-Prestashop 1.7

时间:2018-08-30 09:50:30

标签: prestashop prestashop-1.7

我知道我可以在.tpl模板文件内使用类别类方法,如下所示:

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

但是我如何才能在模板内部初始化Category对象呢?这样__construct函数就会运行。

我问这个问题是因为当我尝试使用某些Category类函数时,出现此错误:

Using $this when not in object context

1 个答案:

答案 0 :(得分:0)

无法通过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)}