2013-07-22 34 views
0

我一直在與苗條的框架,我發現了一個問題。我正在使用mpdf庫從我傳遞給它的html內容中生成pdf文件。我也使用Twig模板引擎(我認爲)顯而易見的原因。我的問題是在控制器工作時,我無法訪問Slim Twig View呈現的主體,因爲數據仍在輸出緩衝區中。我已經通過創建中間件類來攔截具有特定路由的請求並從它的正文中生成PDF文件,但我不認爲這是它應該完成的方式。我也試圖不要在控制器中混淆ob_get_contents,因爲這就像對付框架一樣。獲取渲染主體

所以這裏是我的問題:有沒有更好的方法來做我所做的?

+1

執行此操作的正常方法是獲取生成pdf的視圖,而不是嘗試讓控制器捕獲視圖已完成的操作,然後將其更改爲pdf。 – Anigel

回答

0

Twig的核心庫包含一個名爲Twig_Environment的類,該類用於呈現視圖。這個類有這些方法:

$twig->display('view.html.twig', $variables); 

這將立即輸出生成的內容,這不是你想要的PDF。您需要此方法:

$content = $twig->render('view.html.twig', $variables); 

此方法將返回生成的HTML並且不會回顯它。然後,您可以將$內容傳遞到您的PDF庫以將其轉換爲PDF。

我不知道你正在使用的框架,你需要找到一種方法來訪問Twig_Environment類的實例。

+0

我正在使用苗條。我無法讓它工作。我的代碼:'$ dompdf = new Dompdf(); VARS $ = [ 'PARAM'=> $ PARAM]; $含量= $ APP->渲染( '路徑/到/ view.twig',$ VARS); $ dompdf-> loadHtml($內容); $ dompdf-> render(); $ dompdf-> stream('proyectos.pdf');'我得到以下錯誤:'請求的HTML文檔不包含任何數據。「我如何解決這個問題? – Pathros