Smarty Fetch ничего не загружает в мою переменную

У меня есть класс, который настраивает мои умные экземпляры:

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);
}

person Shackrock    schedule 08.11.2013    source источник


Ответы (1)


Ваш код должен быть

public function fetch($templateName){
     return $this->templateEngine->fetch($templateName . $this->templateExtension);
}
person user2975943    schedule 10.11.2013