Twig---基本使用

三种特殊语法:

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

猜你喜欢

转载自www.cnblogs.com/e0yu/p/9928846.html