Я пытаюсь очистить мою файловую структуру для управления отправкой электронной почты с вложением dompdf.
Однако я не могу понять, как включить HTML-файл отдельно и по-прежнему сохранять значения. Я пытаюсь это с помощью функции, но она не работает.
У меня есть файл, содержащий это (pdf.php)
<?php
function template_PDF($html) {
$html ='<doctype>...';
$html .='<title>'.$pagetitle.'</title>';
$html .='<p>More stuff</p>';
}
?>
У меня есть другой файл (processor.php)
include('pdf.php');
$pagetitle = $_POST['title']; // this is only an example
$ticketno = 'noyb'; // this is only an example
$html = template_PDF($html);
require_once("/home/clientname/public_html/framework/pdf/dompdf.php");
$dompdf=new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('a4', 'portrait');
$dompdf->render();
$pdf=$dompdf->output();
file_put_contents("/home/clientname/docs/REF".$ticketno.".pdf", $pdf);
В основном просто пытаюсь навести порядок. Я не после какого-то сложного решения. если кто-нибудь может помочь пролить свет на то, как передать эту функцию моему файлу и при этом сохранить значения. Функция должна выплевывать значения из файла, в который она в основном включена.
заранее спасибо
Jonny
Вместо того, чтобы раздуть свой PHP с HTML внутри variable
Вы должны создать HTML-файл с заполнителями:
HTML
<!DOCTYPE html>
<head>
<title>{title}</title>
</head>
<body>
{content}
</body>
</html>
Заполнители в этом шаблоне {title}
а также {content}
Теперь, что вам нужно сделать, это получить доступ к файлу шаблона с помощью:
$html = file_get_contents('location/template.html');
Следующим шагом является замена заполнителей, это можно сделать следующим образом:
$needles = array(
'{title}',
'{content}',
);
$replaces = array(
$_POST['txt_title'],/* don't forget to sanitize user input*/
$_POST['txt_content'],
);
$html = str_replace($needles, $replaces, $html);
А потом передать $html
в DOMPDF
Вам нужно передать функции template_PDF все необходимые данные. Из вашего примера это всего лишь $ pagetitle. Вам также нужна функция, чтобы вернуть результат обратно вам. Итак, теперь ваша функция должна стать:
function template_PDF($pagetitle) {
$html ='<doctype>...';
$html .='<title>'.$pagetitle.'</title>';
$html .='<p>More stuff</p>';
return $html
}
Тогда вы будете вызывать функцию как:
$html = template_PDF($pagetitle);
Вы даете функции заголовок страницы, который вы извлекли из $ _POST (и любые другие релевантные данные, которые вы хотите добавить), и функция возвращает заполненный HTML.