twig入门应从变量输出、逻辑控制、模板继承和表单渲染四部分入手:{{ }}输出变量并默认转义,{% if %}{% for %}实现条件与循环,{% extends %}{% block %}支持模板继承,symfony中用{{ form_start() }}等快速渲染表单。

Twig入门不难,关键是从最常用、最贴近实际开发的语法和结构开始。它不是要你背全所有标签,而是快速写出能跑、能读、能维护的模板。下面直奔重点。
变量输出与自动转义
Twig用{{ }}显示变量,这是你每天用得最多的地方。比如传入['title' => '首页', 'user' => ['name' => '张三']],模板里写:
-
{{ title }}→ 输出“首页” -
{{ user.name }}→ 输出“张三”(支持点号访问数组/对象属性) -
{{ content|raw }}→ 只有明确需要渲染HTML时才加|raw,否则默认转义,防XSS
逻辑控制:if 和 for 最实用
条件判断和循环是动态页面的骨架。语法简洁,接近自然语言:
{% if user %}<p>欢迎 {{ user.name }}!{% else %}@#@#@#@#@#@#@#@#@#@0{% endif %}</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" 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 rel="nofollow" href="/xiazai/gongju/2491" title="Symfony Linux版" class="overflowclass">Symfony Linux版</a> <p class="overflowclass">Symfony Linux版整理 Symfony CLI 5.17.1 官方下载入口和 Symfony 框架安装配置说明。</p> </div> <a rel="nofollow" href="/xiazai/gongju/2491" title="Symfony Linux版" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>{% for post in posts %}<h3>{{ post.title }}</h3> <p>{{ post.excerpt }}</p>{% endfor %}- 支持
for ... else:当posts为空时,{% else %}暂无文章{% endif %}会生效
模板继承:减少重复代码
用{% extends %}和{% block %}组织结构,比复制粘贴靠谱得多:
- 先建
base.html.twig:定义公共的、、导航栏和{% block content %}{% endblock %} - 再建
home.html.twig:{% extends 'base.html.twig' %},然后只写{% block content %}...{% endblock %} - 子模板还能覆盖父模板里的任意
block,比如单独改title或styles
表单渲染(Symfony项目专用)
如果你用的是Symfony,默认已集成Twig Bridge,表单不用手写HTML:
-
{{ form_start(form) }}—— 自动生成<form></form>、CSRF字段、enctype等 -
{{ form_widget(form) }}—— 渲染全部字段(含错误提示) -
{{ form_end(form) }}—— 关闭<form></form>并补全隐藏字段 - 想自定义某字段?用
{{ form_row(form.email) }}或{{ form_widget(form.name) }}单独调用
不复杂但容易忽略:每次改完模板,记得清下缓存(开发环境通常自动刷新,但有时需手动删var/cache/dev/twig/)。写完一个.html.twig文件,配好控制器路由,就能在浏览器里看到结果了。










