创建使用WhiteOctoberBundle扩展TCPDF的类

Lad*_*v M 2 php tcpdf symfony

为了在Symfony中创建PDF文件,我使用的是带有WhiteOctoberTCPDFBundle的TCPDF类.两者都通过作曲家安装.

我需要通过扩展TCPDF类来创建自定义页眉和页脚,如TCPDF文档中所述.

但对我来说,唯一可行的解​​决方案是直接在供应商中扩展TCPDF类,然后在供应商/ whiteoctober/tcpdf-bundle/DependencyInjection/Configuration.php中的getConfigTreeBuilder()方法中的WhiteOctoberBundle中将MYPDF类设置为默认值.

所以我的Configuration.php文件如下所示:

public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('white_october_tcpdf');

        $rootNode
            ->children()
                ->scalarNode('file')->defaultValue('%kernel.root_dir%/../vendor/tecnick.com/tcpdf/tcpdf.php')->end()
                ->scalarNode('class')->defaultValue('MYPDF')->end()
            ->end();

        $this->addTCPDFConfig($rootNode);

        return $treeBuilder;
    }
Run Code Online (Sandbox Code Playgroud)

问题是直接在供应商中扩展TCPDF类是不好的做法,它导致MYPDF类在每次更新TCPDF Bundle期间消失.我应该在哪里放置MYPDF类,以便WhiteOctoberBundle可以访问它,同时它不会放在供应商文件夹中?

ric*_*age 6

捆绑作者:-)这是在捆绑文档中,但是为了快速参考:

  1. 创建你的MYPDF类并将它放在正常的Symfony2代码库中 - 让我们说吧src/Acme/DemoBundle/MYPDF.php

    这个类需要扩展基础TCPDF类,这是通过供应商引入的.如果不是,你会得到一个例外.

  2. 在你config.yml或类似的:

    white_october_tcpdf:
        class: 'Acme\DemoBundle\MYPDF'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您应该可以根据文档使用它:

    $pdfObj = $container->get("white_october.tcpdf")->create();
    
    Run Code Online (Sandbox Code Playgroud)

    这将为您提供MYPDF课程的新实例.