Создать новый экземпляр категории внутри шаблона - prestashop 1.7 - PullRequest
0 голосов
/ 30 августа 2018

Я знаю, что могу использовать методы класса категорий внутри .tpl файлов шаблонов, таких как:

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

Но как я могу на самом деле инициализировать объект Category внутри шаблона? Так что __construct функция запускается.

Я спрашиваю это, потому что, когда я пытаюсь использовать некоторые функции класса Category, я получаю эту ошибку:

Using $this when not in object context

1 Ответ

0 голосов
/ 30 августа 2018

Нет способа скопировать категорию через файл 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)}

...