0

私はスリムなフレームワークで作業してきましたが、問題が見つかりました。mpdf ライブラリを使用して、渡した html コンテンツから pdf ファイルを生成しています。私はまた、明らかな理由で (私が思うに) Twig テンプレート エンジンを使用しています。私の問題は、データがまだ出力バッファーにあるため、コントローラーが動作しているときに、Slim Twig View によってレンダリングされたボディにアクセスできないことです。特定のルートでリクエストをインターセプトし、その本文からpdfファイルを生成するミドルウェアクラスを作成することで回避策を作成しましたが、それが本来の方法ではないと思います。また、コントローラーで ob_get_contents を台無しにしないようにしていました。これは、フレームワークに対して作業しているようなものだからです。

だからここに私の質問があります:私がしたことをするためのより良い方法はありますか?

4

1 に答える 1

0

Twig のコア ライブラリには、ビューのレンダリングに使用される Twig_Environment というクラスが含まれています。このクラスには次のメソッドがあります。

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

これにより、生成されたコンテンツがすぐに出力されますが、これは PDF に必要なものではありません。この方法が必要です:

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

このメソッドは、生成された HTML を返し、エコーしません。$content を PDF ライブラリに渡して、PDF に変換できます。

あなたが使用しているフレームワークはわかりません。Twig_Environment クラスのインスタンスにアクセスする方法を見つける必要があります。

于 2013-07-22T19:38:01.677 に答える