您的位置:首页 > 其它

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

2016-07-14 11:17 260 查看

流程控制

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 stringfalse
numeric zerofalse
whitespace-only stringtrue
empty arrayfalse
nullfalse
non-empty arraytrue
objecttrue
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>


[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: