перенести значения из функции в другой файл php

Я пытаюсь очистить мою файловую структуру для управления отправкой электронной почты с вложением 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

0

Решение

Вместо того, чтобы раздуть свой 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

1

Другие решения

Вам нужно передать функции 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.

1