0

API呼び出しを行ってデータを取得し、そのデータを含むビューファイルにデータを入力するユーティリティメソッドを作成しています。

// decode API response
$response = json_decode($sa->response);
// pass data to view
$this->view->paf = $response->response;
// NEED TO GET HTML HERE INSTEAD OF DISPLAYING VIEW
$this->_helper->layout->setLayout('print-nosubmit');

実際に発生するのは、応答がデコードされ、ビュー('print-nosubmit')が$responseのデータとともに表示されることです。ビューを表示したくない場合を除いて、これで問題ありません。ビューにデータを入力する必要がありますが、HTML('print-nosubmit'からのhtmlだけでなく、データを取得した後のそのファイルからのhtml)を取得してDOMPDFforPDFに渡すだけです。作成。私は(明らかに)これを間違った方法で行っています。実際にはレイアウトをロードしたくないのですが、そのビューへの$ responseでデータを取得し、生のHTMLのみを取得する良い方法がわかりません。 。

このタスクを達成するために私が取ることができるアプローチがあると確信していますが、正しい方向へのポインターが必要です。

ありがとう!

*更新:わかりやすくするために、「print-nosubmit」はVIEWファイルであり、/ views / scripts/print-nosubmit.phtmlにあります。

4

1 に答える 1

2

考えられるすべてのことを試した後、解決策を見つけました:

$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$this->view->addScriptPath(APPLICATION_PATH . '/layouts/scripts/'); //default layout path
$html = $this->view->render('print-nosubmit.phtml');

これで、print-nosubmit.phtml が $html に格納されたデータでレンダリングされた後に生成される HTML コンテンツ全体が得られました。

ハザ!

于 2012-11-09T19:16:04.863 に答える