как загрузить файл phtml с переменными, назначенными в файле php

Я пытаюсь загрузить или получить весь контент из phtml в файле php.

все работает нормально, за исключением того, что переменные в файле phtml не загружаются со значениями

Вот мой файл php

<?php
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$code = rand(11111,99999);
$emailSubject = 'Email Verification';
$userEmail = '[email protected]';

function loadEmailTemplate($pagelink='') {

$page = 'email-templates/' . $pagelink . '.phtml';
$pageContent = '';

ob_start();
include($page);
$pageContent = ob_get_contents();
ob_end_clean();

return $pageContent;
}

$mailBody = loadEmailTemplate('emailtemplate');

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: [email protected]\r\n"."X-Mailer: php";
mail($userEmail, $emailSubject, $mailBody, $headers);
?>

и мой emailtemplate.phtml

<html>
<body>
<div style="background-color: #bb4e4e; width:80%; color: #fff;">
 Thank you for registering <?php echo $firstname; ?>, your verification code is <?php echo $code; ?>.
</div>
</body>
</html>

и мой вывод в электронной почте или если я повторяю $mailBody

 Thank you for registering <?php echo $firstname; ?>, your verification code is <?php echo $code; ?>.

но мой вывод должен быть

Thank you for registering John, your verification code is 52256.

это означает, что файл phtml загружается нормально, но я хочу загрузить значения переменных, определенные в файле php, я думал, что мы загружаем содержимое файла phtml после определения переменных php, которые будут автоматически распределять значения переменных, но это не так, я ошибаюсь. может кто-нибудь, пожалуйста, помогите мне найти способ для этого.

благодарю вас


person ManojGeek    schedule 29.05.2015    source источник


Ответы (2)


Вам нужно указать Apache обрабатывать такие файлы, как php.

Добавлять:

<FilesMatch "\.ph(p[2-6]?|tml)$">
   SetHandler application/x-httpd-php
</FilesMatch>

В вашу конфигурацию apache или .htaccess файл

Для получения дополнительной информации, пожалуйста, прочитайте: https://php.net/manual/ro/install.unix.apache2.php

person Alex Tartan    schedule 29.05.2015
comment
все равно не загружаются значения - person ManojGeek; 29.05.2015
comment
Если вы не используете require_once (или аналогичный), они еще не определены (другой HTTP-запрос, другой контекст). Попробуйте передать их в сеанс: $_SESSION['firstname'] = $firstname в свой первый файл и повторите это в phtml. - person Alex Tartan; 29.05.2015
comment
Чтобы использовать переменные сеанса, вам также необходимо запустить сеанс в phtml: if(!session_id()) session_start(); - person Alex Tartan; 29.05.2015
comment
ваша идея сеансов работает, спасибо. хотя я не добавлял этот код в htaccess, phtml работает - person ManojGeek; 29.05.2015

Чтобы решить вашу проблему, вам просто нужно добавить глобальные определения в ваш файл phtml.

Вот как должен выглядеть ваш phtml

<?php global $firstname, $lastname; ?>
<html>
<body>
<div style="background-color: #bb4e4e; width:80%; color: #fff;">
 Thank you for registering <?php echo $firstname; ?>, your verification code is <?php echo $code; ?>.
</div>
</body>
</html>
person iridian    schedule 09.02.2016