美文网首页
Twig模板的使用

Twig模板的使用

作者: 我自静默向韶华 | 来源:发表于2017-03-30 11:38 被阅读0次

    1.引言

        本文中小结了Twig模板的入门级的基本使用(仅适合入门),更多详细的使用方法可以访问:http://twig.sensiolabs.org/doc/2.x/ (英文) 来进行学习研究。

    2.Twig——模板引擎

    1.  {% ... %}和{{ ... }}

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

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

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

        {{ foo.bar }}

        {{ foo.[‘bar‘] }}

        返回的值不存在就会返回null;

    4.  for.bar在模板中会进行以下的操作

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

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

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

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

        。。。会尝试运行isBar方法,如果不存在的话,返回null。

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

    5.  twig中的全局变量

        _self    这个参看macro标签

        _context    这个就是当前的环境

        _charset    当前的字符编码

    6.  变量赋值——具体参见set标签

        {% set foo = 'foo' %}

        {% set foo = [1, 2] %}

        {% set foo = {'foo': 'bar'} %}

    7.  过滤器  filter

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

    8.  函数  function

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

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

        {{ i }},

        {% endfor %}

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

        例:

        <h1>Members</h1>

        <ul>

            {% for user in users %}

                <li>{{ user.username | e }}</li>

            {% endfor %}

        </ul>

    10.  注释 —— 使用{{#...#}},注释掉包围的内容,可以注释单行或多行

    11.  载入其它模板

        i.详见include标签,会返回经过渲染的内容到当前的模板里

        例如:{% include 'sidebar.html' %}

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

        {% for box in boxes %}

            {% include "render_box.html" %}

        {% endfor %}

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

        加入其他参数可以使被载入的模板只访问部分变量,或者完全访问不到。

    12.  模板继承

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

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

        iii.下面定义了4个block块,分别是block head, block title, block content, block footer

    base.html

       iv.注意

           1.block是可以嵌套的

            2.block可以设置默认值(中间包围的内容),如果子模板里没有覆盖,那就直接显示默认值。比如block footer,大部分页面你不需要修改(省力),但你需要到时候仍可以方便到修改(灵活)

    13.  子模板的定义

    子模板

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

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

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

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

    14.  HTML转义

        i.主要是帮助转义尖括号等 <,  >,  &,  " 

            可以有两种办法。一种是用标签,另一种是使用过滤器。

        因为 {{ 是TWIG的操作符,如果你需要输出两个花括号,最简单到办法就是

            {{ '{{' }}

        还可以使用raw标签和raw过滤器,详细参考手册

    15.  macros 宏

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

        这里有个简单示例,定义了一个输出input标签的宏。

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

    3.结语

        上面关于Twig的一些使用的方法,对于初学Twig的朋友们来说还是有点用处的。

        当然,有更多需要请百度,毕竟万事不解问百度,是我们一贯秉承的传统。

        本人随笔,一是希望可以给有需要的人提供一些帮助,再者是在以后的开发过程中遇到同类的问题,可以来回头看一看。

    此致,撒花!!!

    相关文章

      网友评论

          本文标题:Twig模板的使用

          本文链接:https://www.haomeiwen.com/subject/cleuottx.html