Как добавить escpos-php в magento?

Я работаю с magento 1.9. Я хочу использовать драйвер escpos-php для печати наших счетов на термопринтере USB. Я сохранил библиотеки escpos-php в корневом каталоге моей установки magento. В пользовательском модуле magento я перезаписал счета-фактуры по умолчанию, которые были в формате PDF формата A4 при рендеринге, и попытался создать термический счет-фактуру в формате pdf (размер бумаги C7). Этот файл существует по адресу /local/Receipt/Pos/Model/Invoice.php

<?php
  class Receipt_Pos_Model_Invoice extends Mage_Sales_Model_Order_Pdf_Invoice
  {
        public function getPdf($invoices = array())
        {
            // I want to access the libraries from here in this 
            // function like shown  below. where 'vendor' is a directory
            // created by myself.
            require(Mage::getBaseDir('lib') .'/vendor/mike42/escpos-php/autoload.php'); // this is the autoloader that comes with escpos-php driver.
            use Mike42\Escpos\PrintConnectors\FilePrintConnector; // Warning is raised at this line.
            use Mike42\Escpos\Printer;
            $connector = new FilePrintConnector("/dev/usb/lp0");
            $printer = new Printer($connector);

         }
    }
   ?>

Сейчас я пытаюсь получить доступ к файлам классов драйвера escpos-php из этого файла /local/Receipt/Pos/Model/Invoice.php. Поэтому я добавил абсолютный путь автозагрузчика драйвера escpos-php в код в Invoice.php, но это приводит к предупреждению, подобному приведенному ниже.

Warning: include(Mike42\Escpos\PrintConnectors\PrintConnector.php): failed to open stream: No such file or directory  in /var/www/html/checkout/Gama_V2/shop/lib/Varien/Autoload.php on line 94

I think the autoloader of Magento is also trying to find the class files of the escpos-php driver and fails to load it. But I don't want the magento autoloader work here because, I have already included the autoloader of escpos-php driver which takes care of loading its files. How can I avoid this warning and proceed to print receipts? Please help me!

person Velu narasimman    schedule 13.04.2018    source источник


Ответы (1)


Чтобы автозагрузка распознала вашу внешнюю библиотеку, вам нужно будет следовать файловой структуре magento.

Внешние библиотеки обычно располагаются в /lib/

в вашем модуле вы можете использовать их как

require_once Mage::getBaseDir('lib') . '/Mike42/Escpos/Whatever.php';
person Vladimir Samsonov    schedule 13.04.2018
comment
да, я пробовал это, но все еще получаю то же предупреждение! Я понятия не имею. Кстати, когда я искал в Интернете, я нашел подобную проблему без ответа, я привожу это здесь для лучшего понимания проблемы. Пожалуйста, обратитесь к [stackoverflow.com /вопросы/14154449/ - person Velu narasimman; 13.04.2018
comment
предоставьте больше вашего кода для обзора и расскажите, какую часть библиотеки вы поместили в magento. Вам следует рассмотреть возможность использования автозагрузки Varien вместо внешней. - person Vladimir Samsonov; 13.04.2018