Автор Тема: Как получить id_category в Category.php, если обращаешся к static методу класса?  (Прочитано 973 раз)

31 Июль 2019, 18:17:21
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день!
Создал override Category.php в папке /override/classes/Category.php , переопределение методов работает.
Обращаюсь в кастомному методу в /override/classes/Category.php , в методе обращаюсь к свойству класса $this->id_category и $this->id .
Но эти свойства не определены, так как при обращении к статическому методу не создается экземпляр класса и не запускается метод __construct() .

Как получить id_category в Category.php, если обращаешься к static методу класса?
31 Июль 2019, 18:19:54
Ответ #1
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
31 Июль 2019, 19:48:33
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
31 Июль 2019, 19:50:48
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
31 Июль 2019, 23:06:21
Ответ #4
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Код метода?
Извиняюсь что сразу не выложил:
/** override Category model */
class Category extends CategoryCore
{
    public static function hasMultiParentsForCategory($id_parent)
    {
        return ($this->id_category == $id_parent) ? true : false;
    } 
  ...
}

Вызов метода  в override HelperTreeCategories:

$item['multi_parent'] = Category::hasMultiParentsForCategory($item['id_parent']);

Получаю ошибку:
Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalThrowableError: "Using $this when not in object context" at D:\OSPanel\domains\nkabel\override\classes\Category.php line 178

Строка 178 : return ($this->id_category == $id_parent) ? true : false;
31 Июль 2019, 23:07:47
Ответ #5
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Пытался переписать чтобы не было статического метода:

$self_category = new Category();
$item['multi_parent'] = $self_category->hasMultiParentsForCategory($item['id_parent']);

Так ошибок нет, НО при этом присваивается НЕ текущая категория страницы, а другая категория.

Как получить id_category текущей категории страницы
01 Август 2019, 10:25:30
Ответ #6
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем может кто знает как в классе HelperTreeCategories , определить id категории страницы?
01 Август 2019, 12:01:15
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем может кто знает как в классе HelperTreeCategories , определить id категории страницы?
Класс HelperTreeCategories используют для построения дерева категорий. При выводе дерева категорий можете сравнить id текущей категории.
Id категории на странице категории
{$category.id_category}
01 Август 2019, 13:04:19
Ответ #8
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Обращение к стат. методу в классе
self::'наименование метода'
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
01 Август 2019, 17:43:15
Ответ #9
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем спасибо за помощь.

в общем вынес логику метода к контроллер, а в модели оставил метод с sql запросом.
В контроллере намного проще получить id_category  оказывается.