Я использую dompdf с cakephp 3.6 для создания отпечатков из HTML в PDF
У меня есть имя функции контрольная работа внутри контроллера драйвера, и я хочу загрузить файл ctp, который создается внутри src \ Template \ DriverDetails, а имя файла - testpdf.ctp
Можете ли вы, пожалуйста, помочь мне подсказать, как передать полный файл.
Ниже мой код
public function test() {
$html = file_get_contents("testpdf.ctp");
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("invoice.pdf", array("Attachment" =>0));
exit(0);
}
SRC \ Шаблон \ DriverDetails \ testpdf.ctp
<html>
<body>
<table>
<tr><td align = "center"><?php echo $id; ?></td></tr>
<tr><td align = "center">Demo Data</td></tr>
</table>
</body>
</html>






Вы можете попробовать это. Поместите этот метод внутри контроллера. $ view_output - это переменная, в которой хранится содержимое файла ctp. "elements" - это файл ctp для рендеринга. В вашем случае это testpdf
/* Make sure the controller doesn't auto render. */
$this->autoRender = false;
/* Set up new view that won't enter the ClassRegistry */
$view = new View($this, false);
$view->set('text', 'Hello World');
$view->viewPath = 'elements';
/* Grab output into variable without */
$view_output = $view->render('box');
Вот пример хранения html элемента с именем «box» с переменной «text» без отображения или вывода представления
Отредактировал свой ответ. Пожалуйста, проверьте.
Вы можете так попробовать.
public function test()
{
$data = "This can be accessible in view file";
$builder = $this->viewBuilder();
$builder->autoLayout(false);
// set your template path [don't use .ctp]
$builder->template('Users/add');
//Pass data into view file
$view = $builder->build(['data' => $data]);
//Render view file content and store into variable
$viewContent = $view->render();
var_dump($viewContent);
}
Я не понял, где указать мое имя файла и что делать с этим кодом ... не могли бы вы объяснить пошаговые инструкции ..