流程控制

if 语句

if语句在twig中的作用如同if语句在PHP中的一样。
1.你可以通过下面这个简单的例子来判断表达式的结果是否正确。

{% if online == false %}
<p>Our website is in maintenance mode. Please, come back later.</p>
{% endif %}

2.你也可以测试数组是否为空

{% if users %}
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
{% endif %}

也可以用作判断变量是否定义

3.如果有更多的分支条件elseif和else在PHP中的一样被使用,你可以运用更复杂的表达式如下:

{% if kenny.sick %}
Kenny is sick.
{% elseif kenny.dead %}
You killed Kenny! You bastard!!!
{% else %}
Kenny looks okay — so far
{% endif %}

判断表达式正确与否的规则与PHP里面一样。这里有一个边缘条件规则:

逻辑判断
empty string false
numeric zero false
whitespace-only string true
empty array false
null false
non-empty array true
object true

4.逻辑运算

运算符 描述
and
or

for语句

遍历序列中每个个体,比如:

<h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>

循环变量

变量 描述
loop.index 当前循环的次数(从1开始)
loop.index0 当前循环的次数 (从0开始)
loop.revindex 当前循环剩余次数(从1开始)
loop.revindex0 当前循环剩余次数(从0开始)
loop.first 当第一次循环的时候返回true
loop.last 当最后一次循环的时候返回true
loop.length 循环的总数
loop.parent 被循环的数组

添加一个条件

跟PHP不一样,在循环内部不支持break和continue语句,你只能通过过滤器去跳过一些循环,就像这样

<ul>
{% for user in users if user.active %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
<ul>
{% for user in users if user.active %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>

else 分支

如果 users是个空数组就会输出no user found 。

<ul>
{% for user in users %}
<li>{{ user.username}}</li>
{% else %}
<li><em>no user found</em></li>
{% endfor %}
</ul>
<ul>
{% for user in users %}
<li>{{ user.username}}</li>
{% else %}
<li><em>no user found</em></li>
{% endfor %}
</ul>

按keys循环

<h1>Members</h1>
<ul>
{% for key in users|keys %}
<li>{{ key }}</li>
{% endfor %}
</ul>
<h1>Members</h1>
<ul>
{% for key in users|keys %}
<li>{{ key }}</li>
{% endfor %}
</ul>

按keys, values循环

<h1>Members</h1>
<ul>
{% for key, user in users %}
<li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}
</ul>
<h1>Members</h1>
<ul>
{% for key, user in users %}
<li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}
</ul>

按子集合循环

<h1>Top Ten Members</h1>
<ul>
{% for user in users|slice(0, 10) %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>

symfony中twig的流程控制if,for用法的更多相关文章

  1. Nodejs中使用异步流程控制Async

    首先,我们都知道,Node基于事件驱动的异步I/O架构,所谓异步就是非阻塞,说白了就是一个事件执行了,我不必等待它执行完成后我才能执行下一个事件.所以在Node环境中的模块基本都是异步的,上一篇说到我 ...

  2. Java语言中的程序流程控制

    (1. 流程控制 有三种基本技术可以改变程序的控制流程: A.调用方法 :将导致控制流程离开当前方法,转移到被调用的方法. B.选择  :   a. if / else 语句 b. switch语句 ...

  3. symfony中twig的模板过滤器

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

  4. symfony中twig的模板载入

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

  5. symfony中twig的模板变量与注释

    程序会传递给模板若干变量,你需要在模板里输出他们.例如输出$hello .1{{ hello }}.如果传递给模板的是对象或者数组,你可以使用点. 来输出对象的属性或者方法,或者数组的成员.或者你可以 ...

  6. java中的程序流程控制

    一.布尔逻辑1.布尔运算符:①短路和——&&:判断两个表达式,如果第一个为真,继续判断第二个表达式,如果第一个为假,就不需要判断第二个变大时②和——&:判断两个表达式,如果第一 ...

  7. smarty中常用的流程控制逻辑

    if else {if $age > 18} <div>年满十八岁!</div> {else if $age > 16} <div>年满十六岁!< ...

  8. Java基础之程序流程控制

    Java中的程序流程控制 Java中的程序流程分为三种结构:①顺序结构:②分支结构:③循环结构 一.顺序结构 Java中定义成员变量的时候,采用的是前向引用,也就是后面的变量可以引用之前定义好的变量. ...

  9. Java基本语法--程序流程控制

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块.流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构.分支结构.循环结构.本篇博客主要是对 ...

随机推荐

  1. T4自动生成数据库C#实体类学习(1)

    第一个测试的Demo <#@ template language="C#" debug="True" hostspecific="True&qu ...

  2. nsarray排序

    // //  main.m //  05-数组排序 // //  Created by apple on 14-3-21. //  Copyright (c) 2014年 apple. All rig ...

  3. 成员变量的隐藏,方法的覆盖,super关键字

    成员变量的隐藏:当父类和子类有相同的成员变量时,即定义了与父类相同的成员变量时,就会发生子类对父类变量的隐藏.对于子类的对象来说,父类中的同名成员变量被隐藏起来,子类就会优先使用自己的成员变量,父类成 ...

  4. Javascript中Number()、parseIn()和parseFloat()的区别

    有3个函数可以把非数值转化成数值:Number().parseInt()和parseFloat().第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值 ...

  5. 自动备份sqlexpress 数据库脚本

    Create PROCEDURE [dbo].[usp_BackupDatabase] @databaseName sysname,@backupPath nvarchar(255), @backup ...

  6. 树形DP +01背包(HDU 1011)

    题意:有n个房间,有n-1条道路连接着n个房间,每个房间都有若干个野怪和一定的能量值,有m个士兵从1房间入口进去,到达每个房间必须要留下若干士兵杀死所有的野怪,然后其他人继续走,(一个士兵可以杀死20 ...

  7. UI design principles

    Master's conclusion: 1. fix a color pattern 2. fix the frames the UI will use 3. fix the subject tha ...

  8. Java基础(37):Java中日期的显示与格式定值----Date与SimpleDateFormat的试用

    使用 Date 和 SimpleDateFormat 类表示时间 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取 ...

  9. [转]ms sql 2000 下批量 附加/分离 数据库(sql语句)

    这次公司要把MS SQL Server 2000 服务器上的数据库复制到新的服务器上面去,于是几百个数据库文件就交给我附加到新服务器上了   以前一直没接触过这方面的东西,于是果断谷歌了也百度了  找 ...

  10. ORACLE 默认密码确认

    select USER_NAME USER_WITH_DEFAULT_PASSWORD from ( select fnd_web_sec.validate_login('AME_INVALID_AP ...