2013-04-01 82 views
0

我已經設置了一個應用程序,它以某種方式使用前端控制器。我遇到了一個名爲html2pdf的圖書館。該庫將html轉換爲pdf。使用html2pdf生成報告使用php和mvc模式

像這樣:

<?php 
    $content = " 
    <page> 
     <h1>Exemple d'utilisation</h1> 
     <br> 
     Ceci est un <b>exemple d'utilisation</b> 
     de <a href='http://html2pdf.fr/'>HTML2PDF</a>.<br> 
    </page>"; 

    require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php'); 
    $html2pdf = new HTML2PDF('P','A4','fr'); 
    $html2pdf->WriteHTML($content); 
    $html2pdf->Output('exemple.pdf'); 
?> 

正如你所看到的,libary可變換的HTML到PDF。它甚至可以讀取一個html文件並將其轉換爲pdf。

好的,這裏是我的控制器的設置。

class TestController extends Controller { 
    private $template; 

    public function __construct(View $view = null) { 
     parent::__construct($view); 
     $this->template = 'test'; // replace this 
    } 

    public function index() { 
     $this->view->data['someinfo'] = 'information about me'; 
     $this->view->render($this->template); 
    } 
} 

我的想法是,而不是呈現出來的模板,並通過information about me更換$someinfo變量,因爲我用PHP的extract功能。

我可以只替換變量,然後將輸出保存爲html,以便我可以使用html2pdf將其轉換爲pdf?

這是否已經實施?還是有更有效的解決方案,而不是創建和html文件並轉換它?

謝謝。

回答

0

在ZendFramework MVC你可能會做的控制器是這樣的:

function toPdfAction() { 
    // I need a different layout 
    $this->getHelper('layout')->setLayout('pdf-layout'); 
    $this->_helper->layout->disableLayout(); 

    // we need to do renderering ourselves. 
    $this->getHelper('viewRenderer')->setNoRender(); 

    /* @var $layout Zend_Layout */ 
    $layout = $this->_helper->layout->getLayoutInstance(); 
    $layout->assign('content', $this->view->render('mycontroller/myaction.tpl')); 

    $output = $layout->render(); 

    // now we still need to ensure that the rendering is not sent to the browser 
    $this->getResponse()->clearBody(); 

    // now do something with $ouput like convert it to PDF and stream it back 
} 

然而,得到的答覆是要MVC實現特定的。如果你不使用Zend,那可能不適合你。你使用的是什麼MVC框架?

+0

我創建了一個mini-mvc框架,是的,我認爲prolly不適用於我的框架,但我可以看看zend是如何做到這一點的。 –

+0

嗯..把這樣的東西放在控制器中會違背MVC和MVC設計模式的基本原則。僅僅因爲Zend這樣做,並不意味着這是一個好習慣。 –

+0

@tereško,是的,它肯定會打破'良好的做法'。我想知道我該怎麼做。 –