How to load a template from full path in the template engine TWIG

后端 未结 4 1370
暖寄归人
暖寄归人 2021-01-02 07:20

I\'m wondering how to load a template from it\'s full path (like FILE constant give).

Actually you have to set a \"root\" path for template like thi

4条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-02 07:50

    This works for me (Twig 1.x):

    final class UtilTwig
    {
        /**
         * @param string $pathAbsTwig
         * @param array $vars
         * @return string
         * @throws \Twig\Error\LoaderError
         * @throws \Twig\Error\RuntimeError
         * @throws \Twig\Error\SyntaxError
         */
        public static function renderTemplate(string $pathAbsTwig, array $vars)
        {
            $loader = new Twig_Loader_Filesystem([''], '/');
            $twig = new Twig_Environment($loader);
            $template = $twig->loadTemplate($pathAbsTwig);
            $mailBodyHtml = $template->render($vars);
    
            return $mailBodyHtml;
        }
    }
    

    Usage:

    $htmlBody = UtilTwig::renderTemplate('/absolute/path/to/template.html.twig', [
        'some' => 'var', 
        'foo' => 'bar'
    ]);
    

提交回复
热议问题