Twig 的 tags学习(中文) 之一
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学习(中文) 之一相关推荐
- python学习中文第五版_前5个学习Python的网站
python学习中文第五版 Python is a multi-utility high-level language (programming as well as a scripting lang ...
- 设置中文环境_我花几年时间找到的学习中文好方法,值得你一看
最近挺多朋友问关于我家小C是如何学习中文汉字的,其实我也一直挺想写这方面的内容的,但真的是很纠结.说起这个过程,就是一把眼泪一把鼻涕的辛酸,因为对于海外党来说,学中文真的是太艰辛了! 在孩子学习中文过 ...
- 万字总结Keras深度学习中文文本分类
摘要:文章将详细讲解Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CNN.TextCNN. 本文分享自华为云社区<Keras深度学习中文 ...
- TensorFlow 深度学习中文第二版·翻译完成
原文:Deep Learning with TensorFlow Second Edition 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原则>, ...
- TensorFlow 深度学习中文第二版(初稿)
TensorFlow 深度学习中文第二版 第 1 章深度学习入门 人工神经网络 ANN 如何学习? 神经网络架构 深度学习框架 总结 第 2 章 TensorFlow 的首次观察 TensorFlow ...
- 计算机输入法入门,电脑入门——第章 学习中文输入法.doc
电脑入门--第章 学习中文输入法 4.1 智能ABC输入法 智能ABC输入法(又称标准输入法)是中文Windows操作系统自带的一种汉字输入法.智能ABC输入法编码时采用汉语拼音编码方案,将汉字编码与 ...
- Yoshua Bengio新书《Deep Learning》深度学习(中文)学习笔记(improving)
Yoshua Bengio新书<Deep Learning>深度学习(中文)学习笔记: http://download.csdn.net/detail/forest_world/97057 ...
- 解决 select2 开启 tags 输入中文显示不全的BUG
解决 select2 开启 tags 输入中文显示不全的BUG 一.急着修复,不求甚解: 二.分享Debug思路 三.如果你不想动源码,还有一个非完美修复: 相关BUG 一.急着修复,不求甚解: 直接 ...
- twig php函数,TWIG的 function 学习
目前twig内建的函数包括 attribute, block, constant, cycle, dump, parent, random, range. 其实部分函数,在tags的学习里已经见过了. ...
最新文章
- 北京大学年度人物揭榜!发论文、搞科研,看“学神打架”!
- php attr,PHP DOMAttr isId()用法及代码示例
- java程序的最小程序单位_微信小程序中rpx与rem单位使用
- HDU - 7009 树上游走(树的直径+容斥)
- 在anaconda中运行jupyter notebook,无法自动打开浏览器的解决方案,亲测100%有效
- 要闻君说:华为发布2018年年度报告:全球销售收入超千亿美元;微软”立誓“不过愚人节;大众与AWS一起做工业汽车云...
- #华为云·寻找黑马程序员#【代码重构之路】如何“消除”if/else
- virtualbox虚拟机上安装centOS的网络配置(安装centos时选择桥接网络)
- spark 尽量避免数据源的数据倾斜
- H264 SPS分析
- 洛谷OJ:P3811 【模板】乘法逆元(线性递推求逆元)
- soliworks三维机柜布局(二)创建设备位置
- scratch编程 飞翔的小鸟 开发笔记 0604
- 《雍正皇帝·九王夺嫡》社会文化专有词泰译研究(称谓)
- 2020秋招笔试依图科技编程题
- Android程序员必装apk
- 如何打赢一场 DevOps 阻击战
- 微信小程序踩坑之wxml中有内容,但是页面上不显示
- win10系统 纯净版 安装
- 红米2a android5,红米手机/小米手机2S/2A三机对比图赏
热门文章
- Safest Buildings (思维)
- 毕业聚会(java)
- php定义布尔型,php 数据类型之布尔型简介
- 观看黑马程序员六到八章复习总结
- 关于递归连续两次调用的小结
- Pytorch的cuda non_blocking (pin_memory)
- 计算机毕业设计Python+uniapp基于微信小程序在线抽签系统(小程序+源码+LW)
- 模块设计与实现经验总结(三)
- B-样条基函数 matlab实现
- 阿里云子账户 - 权限策略 - 授权给某个账户某个 OSS Bucket 的完全控制权限