QQ :206280548
转载请在文尾保留作者姓名
-------------------------------------------------------------------------
thinkphp5较之前的版本确实让人耳目一新,各种满意,唯独对这个thinkphp自带模板引擎不太满意,于是打算更换一下,在这里分享下过程。
先说明,由于本人习惯所有视图文件集中在一个目录下面,所以没有通过thinkphp的视图体系来引入twig。
也就是说,我的视图文件都是集中在根目录 的views目录下,而不是每个模块下单独一个view文件夹。
1 首先,composer引入twig。在composer.json的require中新增一行
"twig/twig": "~1.0",然后composer install安装即可。
关于composer的使用就不详讲了,不会用的小伙伴请另外学习composer使用。

composer自动引入了twig并且载入了它的命名空间,可以在vendor文件夹下看到twig文件夹,说明这一步成功了。

2、写一个视图输出函数twig
ps:可以叫view覆盖thinkphp的,也可以写在控制器里,小伙伴按需改动即可。

配置文件

function twig($template, $vars=[], $httpCode=false)
{
//定义模板目录
$loader = new \Twig_Loader_Filesystem( ROOT_PATH.'views' );
//初始化
$twig = new \Twig_Environment($loader, array(
'cache' => RUNTIME_PATH.'/twig',
'debug' => config('app_debug')
));
//函数扩展
$url_function = new Twig_SimpleFunction('url', function($url = '', $vars = '', $suffix = true, $domain = false){
return url($url, $vars, $suffix, $domain);
});
$twig->addFunction($url_function);
//输出模板
return $twig->render($template.config('twig.view_suffix'), $vars);
}注意点:twig模板内是不能使用自定义函数的,因此使用$twig->addFunction($function);注册自定义函数,除了url函数,还可以扩展其他的函数,过滤器,具体可以一步twig官网。
3、写一个模板文件

4、控制器输出

5、查看视图是否正确输出


成功
最佳答案