0

smarty インスタンスをセットアップするクラスがあります。

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 が含まれていますが。さらに、単語fetchdisplay下に変更すると、テンプレート ファイルが正しく表示されます。したがって、問題は確かに fetch コマンドにあります。デバッグを続行するために何をすべきかわかりません。

function emailPrep($data,){
    $mailView = new View();

    $emailHTML = $mailView->fetch('myEmail');   
    var_dump($mailView->fetch("myEmail"));
    var_dump($emailHTML);
}
4

1 に答える 1