最新消息:文章中包含代码时,请遵守代码高亮规范!

Twig的基础总结

原创文章 user 65浏览 0评论

Twig是一种模板引擎:

1.  主要的语法有两种{% … %}和{{ … }}

    第一种是用来控制的,比如for循环;第二种是用来输出变量和表达式的。

2.  输出变量。如输出$hello:  {{hello}}

3.  如传递给模板的是对象或者数组,可使用点 . 来输出对象的属性或者方法,或者数组的成员,或者可以使用下标的方式。

    {{ data.info }}
    {{ data['info'] }}

这个需要结合后端代码理解,比如你用Twig页面走了一个后端接口,后端传了一个data数组过来,你就可以用上面的方法将data里面的info输出出来。

image.png

4.  data.info在模板中会进行以下的操作

    如果data是个数组,就尝试返回info成员,如果不存在的话,往下继续;

    如果data是个对象,会尝试返回info属性,如果不存在的话,往下继续;

    会尝试运行info方法,如果不存在的话,往下继续;

    而第二种不一样:

    for[‘bar’] —— for必须是个数组,尝试返回bar成员,如果不就返回null

5.  变量赋值 可以用set标签

    {% set foo = 'foo' %}
    {% set foo = [1, 2] %}
    {% set foo = {'foo': 'bar'} %}

6.  过滤器  filter

    变量可以被过滤器修饰;过滤器和变量用(|)分割开;过滤器也是可以有参数的;过滤器也可以被多重使用。

一开始不知道这个,被坑了一把。这次可要牢记。

7.  函数  function

    Twig有一些内置函数,例如返回0到3的数组就可以用到range函数:

{% for i in range(0, 3) %}
    {{ i }},
{% endfor %}

8.  流程控制 —— 支持 for循环 和 if/else if/eise 结构

    例:

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

        而这里的e就是过滤器的一种

9.  注释 —— 使用{{#…#}},注释掉包围的内容,可以注释单行或多行,这个比较简单,有一点基础都应该懂的。

10.  载入其它模板

    (1).include标签,会返回经过渲染的内容到当前的模板里

    例如:{% include ‘sidebar.html’ %} ,意思就是引用,这个我们的框架里面有很多。用法其实很简单。

    (2).当前模板的变量也会传递到被include的模板里,在那里面可以直接访问你这个模板的变量。例如:

  {% for box in boxes %}
        {% include "render_box.html" %}
    {% endfor %}

    在render_box.html中是可以访问box变量的;

11.  模板继承

    (1).TWIG中最有用到功能就是模板继承,他允许你建立一个“骨骼模板”,然后你用不同到block来覆盖父模板中任意到部分。而且使用起来非常到简单。

    (2).我们先定义一个基本页list.html.twig他包含许多block块,这些都可以被子模板覆盖。

image.png

conten里面也有许多block,比如,before,filtrate等:

image.png

比如这个,在子模块里就可以用同样的方法复写它:

image.png

    (3).下面定义了block块,是block body

image.png

 这个也不是很难理解,就相当于继承,和重写父类的方法。

image.png

12.  子模板的定义

子模板:

  注意:{% extends “base.html” %}必须是第一个标签。

        其中block footer就没有定义,所以显示父模板中设置的默认值。

        需要增加一个block的内容,而不是全覆盖,你可以使用parent函数

    extends标签只能有一个,所以你只能有一个父模板;但有种变通到方法来达到重用多个模板到目的。

13.  macros 宏

    宏有点类似于函数,常用于输出一些html标签。

    这里有个简单示例,我们在control.loader.twig定义了一个输出 a标签的宏。我们经常使用的控件都是这么做的。

image.png

这样我们就可以在需要的地方调用这些控件了,首先我们先引入

image.png

然后调用:

宏参数是没有默认值的,但我们可以通过default过滤器来实现。

image.png

暂时就总结到这里,以后遇到了再进行添加,以此共勉吧!加油。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25295.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我

发表我的评论
取消评论

表情