创建使用WhiteOctoberBundle扩展TCPDF的类

时间:2013-11-26 15:46:22

标签: php symfony tcpdf

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

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

但对我来说唯一可行的解​​决方案是直接在供应商中扩展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;
    }

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

2 个答案:

答案 0 :(得分:6)

捆绑作者:-)这是在bundle documentation,但是为了快速参考:

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

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

  2. config.yml或类似内容中

    white_october_tcpdf:
        class: 'Acme\DemoBundle\MYPDF'
    
  3. 您应该可以按照文档使用它:

    $pdfObj = $container->get("white_october.tcpdf")->create();
    

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

答案 1 :(得分:2)

Symfony官方网站建议AppBundle\Utils

来源:http://symfony.com/doc/current/best_practices/business-logic.html

相关问题