Автор Тема: Необходимо вызвать не статический метод из класса в контроллере  (Прочитано 34 раз)

10 Май 2018, 09:49:55
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
День добрый!

Возникла необходимость вызвать не статический метод из класса в контроллере.

Класс: Category.phpМетод: public function getParentsCategories($id_lang = null)
Контроллер обычный:
class MyPagesControllerCore extends FrontController
{
public $php_self = 'mypages';
 
  public function initContent()
  {
    parent::initContent();
$this->setTemplate(_PS_THEME_DIR_.'mypages.tpl');
  }
}


А код в контроллере хочу выполнить вот такой:
$cats = array();
foreach ($category->getParentsCategories() as $cat)
if (!in_array($cat['id_category'], array(1, 2, $category->id)))//remove root, home and current category from the URL
$cats[] = $cat['link_rewrite'];
$params['categories'] = implode('/', array_reverse($cats));
10 Май 2018, 10:09:22
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1015
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Май 2018, 10:33:40
Ответ #2
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ну и выполняйте, а в чем проблема?

При выполнении:
$category->getParentsCategories()
Получаю белый экран.

При этом

define('_PS_MODE_DEV_', true);
define('_PS_DEBUG_PROFILING_', true);

Предположение, что нет доступа к классу
Category.php
Да, мне нужно вывести все категории/подкатегории товаров (link_rewrite)
10 Май 2018, 10:47:13
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1015
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Опять не понятно, что сделали то и получили, а что Вы хотели получить (если для тупых, чтобы понятно было)?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Май 2018, 10:48:34
Ответ #4
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Решено. Надо добавить что-то типа такого:

$id = 111;
$category = new Category((int)$id);


Получить вот это:
$cat['link_rewrite']
10 Май 2018, 10:53:31
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1015
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Опять не то, что Вы  хотите получить и на какой  странице Вашего сайта?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Май 2018, 11:04:50
Ответ #6
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всё решено уже.

Изначально код не работал, потому что отсутствовал объект $category

Поэтому его необходимо создать, для чего необходимо предварительно выполнить:

$id = 111;
$category = new Category((int)$id);

где $id это код категории для которой необходимо выполнить метод
$category->getParentsCategories()
10 Май 2018, 11:19:14
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1015
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Да, мне нужно вывести все категории/подкатегории товаров

Какая версия PS
На какой странице и как все это должно выглядеть относительно того как это сделано сейчас?

Не надо писать коды, просто расскажите что должно измениться на сайте и на какой странице.

Возможно то что Вы хотите сделать надо делать совсем по другому, видите, профессиональные
программисты Вам пока не отвечают потому что не понимают что Вам надо.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Май 2018, 11:38:15
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1015
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Замечательно что у Вас все получилось, но совершенно не понятно зачем Вам это надо было.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Май 2018, 12:18:11
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 21284
  • Репутация: +25286/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
$category = new Category;потом любой метод из класса Category.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
10 Май 2018, 14:55:05
Ответ #10
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля