在symfony 6.4中创建twig模板需四步:启用twigbundle(检查或安装)、在templates/下建.html.twig文件、控制器用render()返回模板并配route注解、传变量用数组并在模板中{{ }}输出;支持继承base.html.twig复用布局。

在Symfony 6.4中创建Twig模板,就是把HTML结构和动态变量结合,让控制器渲染出带数据的页面——不是写PHP混排代码,而是用清晰的{{ }}和{% %}语法分离逻辑与展示。
确认项目已启用TwigBundle
运行php bin/console list twig,如果看到twig相关命令(如twig:debug),说明TwigBundle已自动启用。若报错“Command ‘twig:debug’ is not defined”,则需手动安装:composer require twig。这一步必须完成,否则后续所有模板都无法被识别或编译。
【未执行此检查就直接建模板,会导致模板文件存在却始终404】
在templates/目录下新建Twig文件
进入项目根目录,确保templates/文件夹存在(Symfony 6.4默认自带)。若不存在,手动创建:mkdir templates。
新建一个基础页面,例如templates/homepage.html.twig,内容只需写一行:{{ 'Hello, Symfony 6.4!' }}。
这一步操作起来很简单,直接把文件拖进去就行。但注意:路径必须严格在templates/下,不能放在src/或public/里;文件扩展名必须是.html.twig,写成.twig或.html会导致渲染失败。
从控制器返回该Twig模板
第一步:打开或创建控制器,例如src/Controller/HomepageController.php:
第二步:确保类继承AbstractController,并在方法中使用render():
return $this->render('homepage.html.twig');
第三步:为该方法添加路由注解或YAML配置。推荐用注解方式,在方法上方加:
#[Route('/', name: 'homepage')]
这三步缺一不可。漏掉#[Route],访问/会404;漏掉render()里的引号内路径,会提示“Unable to find template”;路径写成homepage.twig或templates/homepage.html.twig也会失败——Twig自动在templates/下查找,不接受前缀。
给模板传入变量并显示
方法一:在控制器中传数组
return $this->render('homepage.html.twig', ['name' => 'Alice', 'count' => 42]);
方法二:在模板中用{{ name }} {{ count }}直接输出
方法三:支持嵌套数组和对象属性,例如传['user' => $user]后,模板中写{{ user.name|e }}即可安全输出——Twig默认开启自动转义,|e显式调用等效但更明确。
注意:变量名区分大小写,{{ Name }}和{{ name }}不是同一个;传null值时,{{ name|default('Guest') }}可防止空白输出。
引入基础布局模板实现复用
第一步:在templates/下创建base.html.twig,内容包含{% block body %}{% endblock %}结构。
第二步:在homepage.html.twig顶部写{% extends 'base.html.twig' %}。
第三步:将原内容包进{% block body %}...{% endblock %}。
第四步:刷新页面,内容会按base.html.twig定义的结构渲染。这一步让所有页面共享页头页脚,改一处即全局生效。











