• 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>

  • 相关阅读:
    分布式计算原理
    消息的有序性
    CAP再解释
    数据建模
    领导层级的跨越
    如何上云|什么是多机房多活架构
    mysql导出导入数据
    Qt 串口 封装好的类 直接使用
    C++ 在类的定义时初始化非静态变量
    Qt error C3646: 未知重写说明符
  • 原文地址:https://www.cnblogs.com/phpxuetang/p/5669750.html
Copyright © 2020-2023  润新知