Автор Тема: Как использовать класс из установленного модуля  (Прочитано 562 раз)

06 Август 2017, 14:05:41
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте.
Купил модуль, который позволяет получать счет "по-русски", т.е. общепринятый в России счет. Все работает, но модуль добавляет новую форму, а не заменяет собой "заморский" счет (добавляет в заказе кнопочку "Счет на оплату"). Поэтому по почте клиент получает дефолтный счет.
Хочу это исправить.
В модуле создается класс и вызывается его функция:
SPDF::invoice(Tools::getValue('id_order'));
Хочу вызвать это метод из OrderHistoryCore. Ошибка
Class 'SPDF' not found in /home....
Как быть?
06 Август 2017, 20:30:26
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно подулючить файл класса в заголовке.
06 Август 2017, 20:52:56
Ответ #2
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно подулючить файл класса в заголовке.
А как мне указать к нему путь?
В самом этом классе файл конфигурации подключается так
include_once(dirname(__FILE__).'/../../config/config.inc.php');
06 Август 2017, 22:54:58
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Лучше через override переоределить базовый метод invoice.
07 Август 2017, 09:43:42
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
include_once(_MODULE_DIR_.'mymodule/mymodule.php');Так можно подключить.
07 Август 2017, 10:09:23
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
$m = Module::getInstanceByName('название модуля');
/* $m использовать для доступа к методам и членам класса */
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
08 Август 2017, 20:09:54
Ответ #6
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
include_once(_MODULE_DIR_.'mymodule/mymodule.php');Так можно подключить.
При таком подключении - failed to open stream: No such file or directory
Поставил
include_once(_PS_MODULE_DIR_.'invoicepayru/invoicepayru.php');
Подключение происходит, но все-равно Class 'SPDF' not found в строке
SPDF::invoice(Tools::getValue('id_order'));
*****************************
Цитировать
        $m = Module::getInstanceByName('название модуля');
А код
$m = Module::getInstanceByName('invoicepayru');
$m->SPDF->invoice(Tools::getValue('id_order'));
вызывает ошибку
 Call to a member function invoice() on a non-object

08 Август 2017, 22:43:58
Ответ #7
  • Фрилансер
  • *
  • Сообщений: 189
  • Репутация: +1/-1
  • Сообщество PrestaShop
    • Просмотр профиля
    • Электронный учет коммерческой деятельности
Потому что Class 'SPDF'
не в файле
invoicepayru/invoicepayru.php
скорее всего