为了在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可以访问它,同时它不会放在供应商文件夹中?
答案 0 :(得分:6)
捆绑作者:-)这是在bundle documentation,但是为了快速参考:
创建你的MYPDF
课程并将其放在正常的Symfony2代码库中 - 让我们说src/Acme/DemoBundle/MYPDF.php
这个类需要扩展基础TCPDF类,这是通过供应商引入的。如果不是,你会得到一个例外。
在config.yml
或类似内容中
white_october_tcpdf:
class: 'Acme\DemoBundle\MYPDF'
您应该可以按照文档使用它:
$pdfObj = $container->get("white_october.tcpdf")->create();
将为您提供MYPDF
课程的新实例。
答案 1 :(得分:2)
Symfony官方网站建议AppBundle\Utils
来源:http://symfony.com/doc/current/best_practices/business-logic.html