2013-11-26 71 views
0

爲了在Symfony中創建PDF文件,我使用TCPDF類和WhiteOctoberTCPDFBundle。都通過作曲家安裝。使用WhiteOctoberBundle創建擴展TCPDF的類

我需要通過擴展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捆綁的每次更新過程中消失。我應該在哪裏放置MYPDF類,以便它可以保持訪問WhiteOctoberBundle,同時它不會被放置在供應商文件夾內?這裏:-)這

回答

4

捆綁筆者在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類的新實例。