Yii2框架中Twig模板无法在页面视图中正常使用的问题
搞定Yii2基础版视图用Twig的问题
嘿,我之前也踩过这个坑!你已经把Twig扩展装好了,布局也能正常跑,就是视图文件的解析配置没跟上,我给你一步步说怎么弄:
1. 先改视图组件的配置
打开项目根目录下的config/web.php(基础版的核心配置文件),找到components那一块,添加或者修改view组件的配置,告诉Yii2要用Twig渲染器,还要设置默认找.twig后缀的文件:
'components' => [ // ... 这里是你原来的其他组件配置,比如db、request这些 'view' => [ 'renderers' => [ 'twig' => [ 'class' => 'yii\twig\ViewRenderer', // 缓存Twig编译后的文件,生产环境建议开启,开发可以先设false 'cachePath' => '@runtime/Twig/cache', // 开发阶段开调试模式,方便找问题 'options' => ['debug' => true], // 可以全局注册一些常用的类,比如Html助手 'globals' => ['html' => '\yii\helpers\Html'], // 引入bootstrap的Twig扩展,方便用bootstrap组件 'uses' => ['yii\bootstrap'], ], ], // 关键!设置默认视图后缀为twig,控制器会优先找.twig文件 'defaultExtension' => 'twig', ], ],
2. 调整你的视图文件
- 把
site目录下原来的index.php重命名成index.twig,然后把里面的PHP代码换成Twig语法,比如:
{% extends '@app/views/layouts/main.twi' %} {% block content %} <h1>终于用上Twig啦!</h1> <p>这是我的第一个Yii2 Twig视图页面 😎</p> {% endblock %}
3. 控制器那边不用改(除非你要手动指定)
默认情况下,控制器的render()方法会跟着defaultExtension的配置走,自动找.twig文件。要是你偶尔想指定某个后缀的文件,也可以这么写:
return $this->render('index.twig');
踩坑提醒
- 要是还是报找不到视图的错,先检查
site/index.twig的路径对不对,文件权限有没有问题,别把文件名拼错了(比如写成.twi和布局一样?不用,布局是.twi也没关系,Twig渲染器能识别)。 - 之前你把
.php后缀改回去直接输出Twig代码,是因为Yii2默认用PHP渲染器处理.php文件,根本没经过Twig解析,所以一定要用.twig后缀才行!
内容的提问来源于stack exchange,提问作者AeroMaxx
相关产品推荐
相关产品推荐

