Skip to content

How To: Get DOMPDFModule working with ZF3 #56

@dkern

Description

@dkern

I've made the module working on ZF3. But actually only with dompdf version 0.6.2. You should totally upgrade to newer version of it!

But so far, just to give you an hint what to do to make this module working on ZF3, I made an change list while updateing it. It works pretty well then. Maybe helpful for others too, so I will let this here.

It really easy to do, just follow this easy steps ...


  1. Delete modules/DOMPDFModule/Module.php

  2. Move files from modules/DOMPDFModule/src/DOMPDFModule/
    to modules/DOMPDFModule/src/ (one directory up)

  3. Change the path in getConfig() function
    in modules/DOMPDFModule/src/Module.php
    to __DIR__ . '/../config/module.config.php

  4. Remove getAutoloaderConfig function
    from modules/DOMPDFModule/src/Module.php

  5. Change from use Zend\ServiceManager\FactoryInterface;
    to use Zend\ServiceManager\Factory\FactoryInterface; in:

  • modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.php
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.php
  • modules/DOMPDFModule/src/Service/DOMPDFFactory.php
  1. Change function public function createService(ServiceLocatorInterface $serviceLocator)
    to public function __invoke(ContainerInterface $container, $requestedName, array $options = null) in:
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.php
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.php
  • modules/DOMPDFModule/src/Service/DOMPDFFactory.php
  1. Add new imports:
  • use Interop\Container\ContainerInterface;
  • use Interop\Container\Exception\ContainerException;
  • use Zend\ServiceManager\Exception\ServiceNotCreatedException;
  • use Zend\ServiceManager\Exception\ServiceNotFoundException;
  • use Zend\ServiceManager\ServiceManager;

to the following file headers:

  • modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.php
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.php
  • modules/DOMPDFModule/src/Service/DOMPDFFactory.php
  1. Instead of $serviceLocator->get
    use $container->get(ServiceManager::class)->get
    in factories

  2. Change defined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../../dompdf/dompdf');
    to defined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../vendor/dompdf/dompdf');
    in modules/DOMPDFModule/src/Service/DOMPDFFactory.php

  3. Change require_once __DIR__ . '/../../../config/module.compat.php';
    to require_once __DIR__ . '/../../config/module.compat.php';
    in modules/DOMPDFModule/src/Service/DOMPDFFactory.php

  4. Change $viewManager->getResolver()
    to $serviceLocator->get("ViewResolver")
    in modules/DOMPDFModule/src/Mvc/Service/ViewPdfRendererFactory.php

  5. Change $viewManager->getRenderer()
    to $serviceLocator->get("ViewRenderer")
    in modules/DOMPDFModule/src/Mvc/Service/ViewPdfRendererFactory.php

  6. Add autoloader configuration to composer.json:

"autoload": {
  "psr-4": {
    "DOMPDFModule\\": "module/DOMPDFModule/src/"
  }
}
  1. Run composer command dump-autoload to rebuild autoloading:
$ composer dump-autoload

This tutorial assumes that dompdf is installed in version 0.6.2 by composer in vendor directory.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions