Twig 是 Symfony 5.4 默认模板引擎,核心包括变量输出(自动转义)、if/for 控制、模板继承(extends/block)及常用过滤器(如 raw、date、default),强调安全、可读与可维护。

Twig 是 Symfony 5.4 默认集成的模板引擎,上手不难,关键在于掌握四类核心用法:变量输出、条件与循环控制、模板继承、基础过滤器。它不是要你记住所有语法,而是快速写出安全、可读、可维护的 HTML 模板。
变量输出与自动转义
用 {{ }} 显示数据,Twig 默认对内容做 HTML 转义,防止 XSS 攻击:
-
{{ title }}→ 输出传入的字符串,如"首页" -
{{ user.name }}或{{ user['name'] }}→ 支持点号或下标访问数组/对象属性 -
{{ content|raw }}→ 仅当明确需渲染 HTML(如富文本内容)时才加|raw,否则不建议绕过转义 -
{{ "now"|date("Y-m-d") }}→ 过滤器可链式使用,date是内置函数,直接处理时间字符串
if 和 for:最常用的逻辑控制
用 {% %} 写逻辑,语法接近自然语言,无需 PHP 标签:
{% if user %}<p>欢迎 {{ user.name }}!</p>{% else %}<p>请登录</p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/xiazai/gongju/2491" title="Symfony Linux版"><img src="https://img.php.cn/upload/zhuanqu/000/000/086/6a5f5ae8906a0613.png" alt="Symfony Linux版" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a href="/xiazai/gongju/2491" title="Symfony Linux版">Symfony Linux版</a> <p>Symfony Linux版整理 Symfony CLI 5.17.1 官方下载入口和 Symfony 框架安装配置说明。</p> </div> <a href="/xiazai/gongju/2491" title="Symfony Linux版" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>{% endif %}-
{% for post in posts %}<h2>{{ post.title }}</h2>{% else %}<p>暂无文章</p>{% endfor %}——for ... else在数组为空时生效 - 支持常见运算:
{% if loop.index > 3 %}、{% if user.role == 'admin' %}
模板继承:避免重复写 head / nav / footer
通过 {% extends %} 和 {% block %} 构建统一布局:
- 先创建
templates/base.html.twig,定义公共结构和多个{% block %}占位区(如title、body) - 子模板如
templates/home/index.html.twig开头写{% extends 'base.html.twig' %},再只覆盖需要变动的{% block body %}...{% endblock %} - 在子模板中可用
{{ parent() }}插入父模板对应区块原有内容,适合追加而非完全替换
表单与常见过滤器速查
Symfony 5.4 中表单通常由控制器生成并传入,模板里用 Twig 函数快速渲染:
-
{{ form_start(form) }}→ 输出<form>开始标签 -
{{ form_row(form.title) }}→ 渲染字段含 label + input + error -
{{ form_end(form) }}→ 输出闭合</form> - 常用过滤器:
{{ name|default('访客') }}、{{ text|striptags|trim }}、{{ price|number_format(2, '.', ',') }}
不复杂但容易忽略:确保控制器返回的数组键名与模板中 {{ }} 引用的变量名一致;首次运行前检查 php bin/console about 确认 Twig 已启用;模板文件扩展名推荐统一用 .html.twig,语义清晰且 IDE 支持好。

















