三种特殊语法:

{{ … }}   “说些什么”:输出一个变量值或者一个表达式的结果到模板。如:{{ 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 %}

多条件使用:

{% 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 %}

Twig---基本使用的更多相关文章

  1. 为模版设计师而生的Twig(下)-Twig使用指南

    原文地址:http://my.oschina.net/veekit/blog/276800 12. 模板继承 Twig最强大的部分是模板继承.模板继承允许你建立一个基本的"骨架"模 ...

  2. 为模版设计师而生的Twig(上)-Twig使用指南

    原文地址:http://my.oschina.net/veekit/blog/268828 1. 概要 模板是一个简单的文本文件.它可以生成任何基于文本的格式(HTML.XML.CSV等).它不具有特 ...

  3. symfony2 twig模板引擎

    1.基本语法 Says something:{{    }} Does something:{%  %} Comment something:{#    #} {% extends "App ...

  4. opencart 引入 TWIG 模板引擎

     1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'lib ...

  5. PHP模版引擎 – Twig

    在网站开发过程中模版引擎是必不可少的,PHP中用的最多的当属Smarty了.目前公司系统也是用的Smarty,如果要新增一个页面只需把网站的头.尾和左侧公共部分通过Smarty的include方式引入 ...

  6. twig一些常用的用法总结【原创】

    在使用Symphony项目时,需要一些常用的twig,经过自己做的几个项目,自己的总结如下: 一.twig-数据判断 有时候在使用后台传给前台数据时需要判断是否有这个值,(是否为空(”或null)或是 ...

  7. yii2 使用twig 模板引擎

    yii2 默认使用PHP 和html 混合的方式来写视图层,但我个人还是喜欢纯模板语言的方式.而且已经非常习惯使用twig的语法,最近想使用yii2进行开发,所以还是选择使用twig视图引擎. git ...

  8. Twig模版语言入门

    转自 :http://pengbotao.cn/twig-template-language.html Twig中有两种定界符{% ... %} 和 {{ ... }} , 前一种用来执行语句,比如f ...

  9. symfony中twig的模板过滤器

    过滤器 变量可以被过滤器修饰.过滤器和变量用(|)分割开.过滤器也是可以有参数的.过滤器也可以被多重使用. 通用过滤器 date过滤器 1.1版本新增时区支持,1.5版本增加了默认的日期格式.格式化时 ...

  10. symfony中twig的模板载入

    模板 载入模板 {% include ‘sidebar.html’ %} 当前模板的变量也会传递到 被include的模板里,在那里面可以直接访问你这个模板的变量. {% for comment in ...

随机推荐

  1. Android程序中有多个Activity时的可全部退出方法

    下面是代码.该方法的原理是用一个list记录每次启动的acitivity,在退出时候循环退出改list中保存的acitivity,这样就做到了所有的acitivity完美退出.   先写一个类继承Ap ...

  2. CentOS6.8手动安装MySQL5.6

    众所周知,mysql5.7推出后有很多没有填好的坑,对于老的系统和项目兼容性也存在问题,所以现在普遍的web项目还是应该跑在centos6.8+mysql5.6的环境之下,今天主要说一下mysql5. ...

  3. 使用pyinotify实现加强版的linux tail -f 命令,并且对日志类型的文本进行单独优化着色显示。

    tail -f命令不能自动切换切片文件,例如日志是每100M生成一个新文件,tail -f不能自动的切换文件,必须关闭然后重新运行tail -f 此篇使用pyinotify,检测文件更新,并实现tai ...

  4. js提取新浪邮箱的信用卡

    js提取用户新浪邮箱中的信用卡信息,是js非nodejs. 对比py,之前就做不好,出现了复杂点选验证码.js的开发速度只需要py的三分之一,甚至十分之一. js在客户端执行,py在后端执行,py要实 ...

  5. 【jmeter】jmeter 压力测试

    1.添加线程组,添加CSV Data set config 设置要读取的文件的路径,内容. 指定文件名称,文件编码,变量名,分割符等. 2.添加HTTP请求,注意参数 3.添加监听信息 模拟高并发 , ...

  6. Java重定向输出流实现程序日志

    创建一个类,在该类的main主方法中,保存System类的out成员变量为临时变量,然后创建一个新的文件输出流,并把这个输出流设置为System类新的输出流.在程序关键位置输出调试信息,这些调试信息将 ...

  7. SpringBoot(十)-- 整合MyBatis

    1.pom.xml 配置maven依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <ar ...

  8. 第十九篇:不为客户连接创建子进程的并发回射服务器(select实现)

    前言 在此前,我已经介绍了一种并发回射服务器实现.它通过调用fork函数为每个客户请求创建一个子进程.同时,我还为此服务器添加了自动消除僵尸子进程的机制.现在请想想,在客户量非常大的情况下,这种为每个 ...

  9. React Native(四)——顶部以及底部导航栏实现方式

    效果图: 一步一步慢慢来: 其实刚入手做app的时候,就应该做出简单的顶部以及底部导航栏.无奈又在忙其他事情,导致这些现在才整理出来. 1.顶部导航栏:react-native-scrollable- ...

  10. postgreSQL连接 java接口

    1.下载PostgreSQL JDBC驱动: http://jdbc.postgresql.org/download.html 2. 新建一个java项目,导入下载的jar包Add External ...