twig 之基本语法
来源:互联网 发布:阿里巴巴一件代发淘宝 编辑:程序博客网 时间:2024/06/03 16:34
Twig定义了三种特殊的语法:
(前两种和angular JS类似)
- {{ … }}“说些什么”:输出一个变量值或者一个表达式的结果到模板。如:{{ item.username }}。 twig也包含filters,它可以在模板渲染之前改变输出内容。{{表达式 | filters}}。这里还需要注意的是,当表达式中传值的时候,使用『:』,例如:{{ path(‘board_reply’,{id:item.id}) }}
- {% … %}“做些什么”:控制模板逻辑的tag(标签),用于执行声明,如if、for循环语句等。
- {# … #}“进行注释”:它相当于php的语法。它用于注释单行和多行。注释的内容不作为页面输出。
block
相当于占位符,当被另一个模板继承时,可以调用这个模块。定义时的内容在继承的模板中默认是不会出现的,可以使用 {{ parent() }} 来显示。块名称可以使用字母数字字符和下划线,不允许使用破折号(-)。
{% block ** %} 用来定义,{% endblock %}
extends
不支持多重继承,只支持一个扩展模板
{% extends 'base.html.twig' %}
{% include %}:包含模板
{% extends %}:扩展模板
{% embed %} xxx {% endembed %}:包含模板并扩展该模板的内容,相当于 include 和 extends 的结合体
{% macro %} xxx {% endmacro %}:定义宏以便多次调用,与定义 PHP 函数无异
{% from aaa import bbb as ccc %}:从指定模板导入宏并设置别名
注意事项
- 如果在模板中使用{% extends %},它必须是模板中的第一个标签
- 如果你发现在多个模板中有重复的内容,这可能意味着你需要为该内容在父模板中定义一个{% block %}了。
- 某些情况下,更好的解决方案可能是把这些内容放到一个新模板中,然后在该模板中include它。例如(在哪使用在哪 include): {{ include(‘article/article_details.html.twig’, { ‘article’: article }) }}
- 如果你需要从父模板中获取一个block的内容,可以使用{{ parent() }}函数。如果你只是想在父级块上添加新内容,而不是完全覆盖它,这很有用
记住 end。
比如{% if **%} 和{% endif %} 、
{% for %} 和 {% endfor %}
判断
一个变量是否定义(存在)
{% if item is defined %}{% item.name %} {% endif %}
一个变量是否为空
{% if item is null %} {# do something #}{% endif %}
法二
{% if item %} {{ item.id }} {% else %} <h1>还没有人留言或留言已经删除</h1> {% endif %}
多个条件 and 、or用法
{% if item is defined and item %} {{ item.id }} {% else %} <h1>还没有人留言或留言已经删除</h1>{% endif %}
循环
法一:
{% for item in list %} <li> {{ item.title }} </li> {% endfor %}
法二:按数组的key,value遍历,key=index,value=item
{% for index, item in list %} {{ index }}:{{ item.id }}{% endfor %}
按数组的 key 遍历
{% for key in list|keys %}{{ key }}{% endfor %}
阅读全文
0 0
- twig 之基本语法
- PHP Template Engine:Twig 语法汇总
- J2SE之基本语法
- J2SE 之 基本语法
- xml之基本语法
- Lua之基本语法
- JavaScript之基本语法
- php之基本语法
- Kotlin之基本语法
- 浅谈MVC之twig模板引擎
- MVC简单搭建之twig模板引擎
- SQLite入门之基本语法
- SASS详解之基本语法
- php学习之基本语法
- JavaScript入门之基本语法
- SQLite入门之基本语法
- OC基础教程之基本语法
- lua学习之基本语法
- struts2中请求包含参数如何处理
- JSP九个内置对象及其常用方法
- UGUI绘制过多点连续的平滑曲线
- Unity中如何实现关卡制作(C#)
- PADS layout 布局前期工作的展开
- twig 之基本语法
- MIMO技术杂谈(三):知己知彼,百战不殆--信道信息的获取和应用
- 访问服务器请求数据
- Shiro入门—认证
- 1019. 数字黑洞 (20)
- 编写你的第一个Angular2 Web应用
- 拓扑排序
- PHP魔术方法和魔术常量总结
- 利用邮件合并,每人一份信息表