Skip to content

How To: Get DOMPDFModule working with ZF3 #56

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions