twig 的tags学习 之一
http://blog.csdn.net/jiaochangyun/article/details/7178372

twig 的tags学习 之二
http://blog.csdn.net/jiaochangyun/article/details/7178896

twig 的tags学习 之三 完结
http://blog.csdn.net/jiaochangyun/article/details/7180037

Twig 是个 简单而强力的模板,因为在学习sf 所以看看她。

本文来源http://twig.sensiolabs.org/doc/tags/index.html

目前支持的tags包括

for    if    macro    filter    set    extends    block    include    import    from    use    spaceless    autoescape    raw    flush    do

twig在html分为3种

{{...}} 直接输出其中的变量

{#...#} 注释标签

{%...%} 命令标签,就是我们要学习的这些

for标签

这个最简单,就是循环。

基于数组的循环

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

基于数字的循环,特别要注意,这里会输出0-10 也就是11个数字。

{% for i in 0..10 %}* {{ i }}
{% endfor %}

基于字母的循环

{% for letter in 'a'..'z' %}* {{ letter }}
{% endfor %}

在循环体内部的变量

变量名 描述
loop.index 循环的次数(从1开始)
loop.index0 循环的次数(从0开始)
loop.revindex 循环剩余次数(最小值为1)
loop.revindex0 循环剩余次数(最小值为0)
loop.first 当第一次循环的时候返回true
loop.last 当最后一次循环的时候返回true
loop.length 循环的总数
loop.parent 被循环的数组

loop.length, loop.revindex, loop.revindex0, loop.last 这几个值只有在被循环的是 php数组 或实现了 Countable 接口的类,才有效。

添加一个条件

跟PHP不一样,在循环内部不支持break和continue语句,你只能通过过滤器去跳过一些循环,就像这样

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

按keys循环

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

if标签

这个不用多说,直接看例子

{% if users %}<ul>{% for user in users %}<li>{{ user.username|e }}</li>{% endfor %}</ul>
{% endif %}{% if kenny.sick %}Kenny is sick.
{% elseif kenny.dead %}You killed Kenny!  You bastard!!!
{% else %}Kenny looks okay --- so far
{% endif %}

macro标签

macro(宏标签)类似于其他语言中的函数,常用于填充html标签,以下是一个例子,用来渲染<input>

{% macro input(name, value, type, size) %}<input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
{% endmacro %}

macro与函数的不同之处在于:

1、参数的默认值是通过macro块内部的 default过滤器来定义的。

2、参数总是可选的。

另外,就跟php函数一样,macro内部是无法使用外部的变量的。但你可以传递一个特殊变量_context作为参数来获取整个内容。

macro可以被定义在任何的模板内,但在你使用之前需要使用 imported

{% import "forms.html" as forms %}

然后就可以这样使用了

<p>{{ forms.input('username') }}</p>
<p>{{ forms.input('password', null, 'password') }}</p>

如果你要在定义macro的模板里使用,就不需要imported 可以使用特殊变量_self

<p>{{ _self.input('username') }}</p>

如果你要定义一个macro里 包含另一个macro,并且两个macro在同一个文件里,可以使用特殊变量_self

{% macro input(name, value, type, size) %}<input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
{% endmacro %}{% macro wrapped_input(name, value, type, size) %}<div class="field">{{ _self.input(name, value, type, size) }}</div>
{% endmacro %}

如果两个macro在不同的文件里,你需要使用import

{# forms.html #}{% macro input(name, value, type, size) %}<input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
{% endmacro %}{# shortcuts.html #}{% macro wrapped_input(name, value, type, size) %}{% import "forms.html" as forms %}<div class="field">{{ forms.input(name, value, type, size) }}</div>
{% endmacro %}

filter标签

就是给整个区块使用过滤器

{% filter upper %}This text becomes uppercase
{% endfilter %}
{% filter lower|escape %}<strong>SOME TEXT</strong>
{% endfilter %}

Twig 的 tags学习(中文) 之一相关推荐

  1. python学习中文第五版_前5个学习Python的网站

    python学习中文第五版 Python is a multi-utility high-level language (programming as well as a scripting lang ...

  2. 设置中文环境_我花几年时间找到的学习中文好方法,值得你一看

    最近挺多朋友问关于我家小C是如何学习中文汉字的,其实我也一直挺想写这方面的内容的,但真的是很纠结.说起这个过程,就是一把眼泪一把鼻涕的辛酸,因为对于海外党来说,学中文真的是太艰辛了! 在孩子学习中文过 ...

  3. 万字总结Keras深度学习中文文本分类

    摘要:文章将详细讲解Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CNN.TextCNN. 本文分享自华为云社区<Keras深度学习中文 ...

  4. TensorFlow 深度学习中文第二版·翻译完成

    原文:Deep Learning with TensorFlow Second Edition 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原则>, ...

  5. TensorFlow 深度学习中文第二版(初稿)

    TensorFlow 深度学习中文第二版 第 1 章深度学习入门 人工神经网络 ANN 如何学习? 神经网络架构 深度学习框架 总结 第 2 章 TensorFlow 的首次观察 TensorFlow ...

  6. 计算机输入法入门,电脑入门——第章 学习中文输入法.doc

    电脑入门--第章 学习中文输入法 4.1 智能ABC输入法 智能ABC输入法(又称标准输入法)是中文Windows操作系统自带的一种汉字输入法.智能ABC输入法编码时采用汉语拼音编码方案,将汉字编码与 ...

  7. Yoshua Bengio新书《Deep Learning》深度学习(中文)学习笔记(improving)

    Yoshua Bengio新书<Deep Learning>深度学习(中文)学习笔记: http://download.csdn.net/detail/forest_world/97057 ...

  8. 解决 select2 开启 tags 输入中文显示不全的BUG

    解决 select2 开启 tags 输入中文显示不全的BUG 一.急着修复,不求甚解: 二.分享Debug思路 三.如果你不想动源码,还有一个非完美修复: 相关BUG 一.急着修复,不求甚解: 直接 ...

  9. twig php函数,TWIG的 function 学习

    目前twig内建的函数包括 attribute, block, constant, cycle, dump, parent, random, range. 其实部分函数,在tags的学习里已经见过了. ...

最新文章

  1. 北京大学年度人物揭榜!发论文、搞科研,看“学神打架”!
  2. php attr,PHP DOMAttr isId()用法及代码示例
  3. java程序的最小程序单位_微信小程序中rpx与rem单位使用
  4. HDU - 7009 树上游走(树的直径+容斥)
  5. 在anaconda中运行jupyter notebook,无法自动打开浏览器的解决方案,亲测100%有效
  6. 要闻君说:华为发布2018年年度报告:全球销售收入超千亿美元;微软”立誓“不过愚人节;大众与AWS一起做工业汽车云...
  7. #华为云·寻找黑马程序员#【代码重构之路】如何“消除”if/else
  8. virtualbox虚拟机上安装centOS的网络配置(安装centos时选择桥接网络)
  9. spark 尽量避免数据源的数据倾斜
  10. H264 SPS分析
  11. 洛谷OJ:P3811 【模板】乘法逆元(线性递推求逆元)
  12. soliworks三维机柜布局(二)创建设备位置
  13. scratch编程 飞翔的小鸟 开发笔记 0604
  14. 《雍正皇帝·九王夺嫡》社会文化专有词泰译研究(称谓)
  15. 2020秋招笔试依图科技编程题
  16. Android程序员必装apk
  17. 如何打赢一场 DevOps 阻击战
  18. 微信小程序踩坑之wxml中有内容,但是页面上不显示
  19. win10系统 纯净版 安装
  20. 红米2a android5,红米手机/小米手机2S/2A三机对比图赏

热门文章

  1. Safest Buildings (思维)
  2. 毕业聚会(java)
  3. php定义布尔型,php 数据类型之布尔型简介
  4. 观看黑马程序员六到八章复习总结
  5. 关于递归连续两次调用的小结
  6. Pytorch的cuda non_blocking (pin_memory)
  7. 计算机毕业设计Python+uniapp基于微信小程序在线抽签系统(小程序+源码+LW)
  8. 模块设计与实现经验总结(三)
  9. B-样条基函数 matlab实现
  10. 阿里云子账户 - 权限策略 - 授权给某个账户某个 OSS Bucket 的完全控制权限