У меня есть класс, который настраивает мои умные экземпляры:
class View {
protected $templateEngine;
protected $templateExtension = '.tpl';
public function __construct(){
global $ABS_PUBLIC_PATH;
global $ABS_PUBLIC_URL;
$this->templateEngine = new Smarty();
$this->templateEngine->error_reporting = E_ALL & ~E_NOTICE;
$this->templateEngine->setTemplateDir($ABS_PUBLIC_PATH . '/templates/');
$this->templateEngine->setCompileDir($ABS_PUBLIC_PATH . '/templates_c/');
$this->templateEngine->assign('ABS_PUBLIC_URL', $ABS_PUBLIC_URL);
if(isset($_SESSION['loggedIn'])){
$this->assign('session', $_SESSION);
}
}
public function assign($key, $value){
$this->templateEngine->assign($key, $value);
}
public function display($templateName){
$this->templateEngine->display($templateName . $this->templateExtension);
}
public function fetch($templateName){
$this->templateEngine->fetch($templateName . $this->templateExtension);
}
}
Затем в своих функциях я использую класс следующим образом:
public function showMeSomething()
{
$view = new View();
$view->assign('session', $_SESSION);
$view->display('header');
$view->display('index');
$view->display('footer');
}
Теперь я пытаюсь получить некоторые данные в переменную, чтобы также отправлять электронные письма из моих файлов шаблонов. К сожалению, приведенные ниже var_dumps (оба) выводят NULL
, даже несмотря на то, что указанный файл шаблона содержит много HTML. Кроме того, изменение слова fetch
на display
ниже приведет к правильному отображению файла шаблона. Итак, проблема, безусловно, заключается в команде fetch. Я не уверен, что делать, чтобы продолжить отладку.
function emailPrep($data,){
$mailView = new View();
$emailHTML = $mailView->fetch('myEmail');
var_dump($mailView->fetch("myEmail"));
var_dump($emailHTML);
}