1.Twig定义了三种特殊的语法:
{{ ... }}
"Says something": prints a variable or the result of an expression to the template.
输出一个变量值或者一个表达式的结果到模板。
{% ... %}
“做些什么”:控制模板逻辑的*tag(标签)*,用于执行声明,如for循环语句等。
"Does something": a tag that controls the logic of the template; it is used to execute statements such as for-loops for example.
{# ... #}
“进行注释”:它相当于php的/* comment */语法。它用于注释单行和多行。注释的内容不作为页面输出。
"Comment something": it's the equivalent of the PHP /* comment */ syntax. It's used to add single or multi-line comments. The content of the comments isn't included in the rendered pages.
twig也包含filters,它可以在模板渲染之前改变输出内容。下例让title变量在被渲染之前全部大写:
{{ title|upper }}
2.Twig模板缓存
twig是很快的,每个Twig模板被编译成原生PHP类并且缓存起来。编译过的类被保存
在var/cache/{environment}/twig 目录下(其中{environment} 是环境,如dev和prod),
并在某些情况下可以同时调试,非常有用
当debug模式可用时(dev环境),如果一个twig模板发生改变,将会被自动重新编译。
这意味着你可以在开发过程中随意修改模板,而不必担心要去清除缓存了。
当debug模式被关闭时(prod环境),你必须手动的清除Twig缓存目录,以便重新生成Twig模板。
记得在部署程序时一定要做到这一点。
3.模板继承和布局
大多数的时候,模板在项目中都有通用的元素,比如header,footer,sidebar等等。
在Symfony中,我们将采用不同的思考角度来对待这个问题。一个模板可以被另外的模板装饰。
这个的工作原理跟PHP类非常像,模板继承让你可以创建一个基础“layout”模板,
它包含你的站点所有通用元素,并被定义成blocks(如同一个“包含基础方法的PHP基类”)。
一个子模板可以继承layout基础模板并覆写它的任何一个block(就像“PHP子类覆写父类中的特定方法”)。
父模板以一个特殊的字符串语法来表示 base.html.twig ,这个路径是相对于整个
项目的app/Resources/views目录而言的。你也可以使用逻辑名称相同的::base.html.twig
4.模板的命名和存储位置
5.在Bundle中引入模板
6.模版后缀
7.引入其他模版
8.页面链接
<a href="{{ path('_welcome') }}">Home</a> //相对 URL
<a href="{{ url('test_url') }}">link</a> //绝对 URL
9.Assets链接
<img src="{{ asset('images/logo.png') }}" alt="logo"> //相对 URL
<img src="{{ absolute_url(asset('css/blog.css')) }}" alt="logo"> //绝对URL
<img src="{{ absolute_url(asset('WwwFirstBundle/Resources/public/js/main.js')) }}" alt="logo">
10.在Twig中包容样式表和Javascript
包含自己bundle 的 css,js
1.在自己的bundle下面创建 js,css
2.php app/console assets:install --symlink
3. {% block stylesheets %}
<link rel="stylesheet" href="{{ asset('bundles/wwwfirst/css/first.css') }}">
<link rel="stylesheet" href="{{ absolute_url(asset('css/a.css')) }}">
{% endblock %}
{% block javascripts %}
<script src="{{ asset('bundles/wwwfirst/js/first.js') }}"></script>
{% endblock %}
11.转义输出
{{ description }}
<br/>
{{ description|raw }}

6355

被折叠的 条评论
为什么被折叠?



