sdi_68 3 Опубликовано 8 января, 2016 Жалоба Share Опубликовано 8 января, 2016 Добрый день! С прошедшими праздниками! Столкнулся с проблемой при создании модуля доставки ,прошу помощи. У транспортной компании есть несколько типов доставки: курьерская ,курьерская с кассовым обслуживанием, самовывоз и самовывоз с кассовым обслуживанием. Реализовать решил через 4 отдельных модуля и общий функционал вынести в отдельный файл класса. В итоге каждый модуль доставки начинается с конструкции include_once(DIR_WS_CLASSES .'А.php'); // общий функционал для всех модулей доставки компании class B1 extends A{ // модуль конкретного типа доставки компании .... } Модули конкретного типа доставки по образцу обычных модулей доставки (например, почты России). В режиме покупателя все работает без особых проблем. Все как положено. Проблема в админке, когда открываешь список модулей доставки ,список отображается только до первого модуля этой компании. Дальше список обрывается (см. скриншот). Отладчик показал ,что выполнение прерывается именно на class B1 extends A{ Если подставить код класса, вместо include, то в админке модуль появляется в списке, а страничкаcheckout.php перестает отображаться. Подскажите, в чем проблема? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 8 января, 2016 Жалоба Share Опубликовано 8 января, 2016 Берите за основу существующий модуль и делайте на его основе свой модуль. Просто include внутри модуля делайте и создавайте экземпляр класса типа $class = new class; и уже затем работайте внутри своего модуля с $class Обычно так делается, если нужно использовать сторонние классы. Например в модуле оплаты paysera используется внешний класс /includes/modules/payment/paysera.php Если у Вас не работает, значит ошибка в Вашем файле. Возьмите за основу существующий модуль какой-то, уже готовый, и на его основе сделайте свой. Ссылка на сообщение Поделиться на другие сайты
sdi_68 3 Опубликовано 8 января, 2016 Автор Жалоба Share Опубликовано 8 января, 2016 Спасибо. Я и делаю на основе существующего. Просто думал ,что может быть я что-то с наследованием не правильно сделал. Или родительский класс неправильно подключил.... Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 8 января, 2016 Жалоба Share Опубликовано 8 января, 2016 Раз не работает - понятное дело, что неправильно :) Я ж Вам написал как обычно делается и даже ссылку на файл дал с рабочим примером. Посмотрите, да сделайте по аналогии. Ссылка на сообщение Поделиться на другие сайты
sdi_68 3 Опубликовано 8 января, 2016 Автор Жалоба Share Опубликовано 8 января, 2016 Проблема была вот в этом include_once(DIR_WS_CLASSES .'А.php') Дело в том, что константа DIR_WS_CLASSES определена по разному в клиентской и админской части. А модуль работает и там и там. Пришлось сделать так: require_once(DIR_FS_DOCUMENT_ROOT . 'includes/classes/A.php'); Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 8 января, 2016 Жалоба Share Опубликовано 8 января, 2016 Понятно. Хорошо, что разобрались. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения