symfony中twig的流程控制if,for用法

流程控制

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>

posted @ 2016-07-14 11:17  php91  阅读(2467)  评论(0编辑  收藏  举报