twig网页模板基础

2024-05-31 23:38
文章标签 基础 模板 网页 twig

本文主要是介绍twig网页模板基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

这个最简单,就是循环。

基于数组的循环

[html] view plain copy print ?
  1. <h1>Members</h1>  
  2. <ul>  
  3.     {% for user in users %}  
  4.         <li>{{ user.username|e }}</li>  
  5.     {% endfor %}  
  6. </ul>  

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

[html] view plain copy print ?
  1. {% for i in 0..10 %}  
  2.     * {{ i }}  
  3. {% endfor %}  

基于字母的循环

[html] view plain copy print ?
  1. {% for letter in 'a'..'z' %}  
  2.     * {{ letter }}  
  3. {% 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语句,你只能通过过滤器去跳过一些循环,就像这样

[html] view plain copy print ?
  1. <ul>  
  2.     {% for user in users if user.active %}  
  3.         <li>{{ user.username|e }}</li>  
  4.     {% endfor %}  
  5. </ul>  

else 分支

如果 users是个空数组就会输出no user found 。

[html] view plain copy print ?
  1. <ul>  
  2.     {% for user in users %}  
  3.         <li>{{ user.username}}</li>  
  4.     {% else %}  
  5.         <li><em>no user found</em></li>  
  6.     {% endfor %}  
  7. </ul>  


按keys循环

[html] view plain copy print ?
  1. <h1>Members</h1>  
  2. <ul>  
  3.     {% for key in users|keys %}  
  4.         <li>{{ key }}</li>  
  5.     {% endfor %}  
  6. </ul>  

按keys, values循环

[html] view plain copy print ?
  1. <h1>Members</h1>  
  2. <ul>  
  3.     {% for key, user in users %}  
  4.         <li>{{ key }}: {{ user.username|e }}</li>  
  5.     {% endfor %}  
  6. </ul>  


if标签

这个不用多说,直接看例子
[html] view plain copy print ?
  1. {% if users %}  
  2.     <ul>  
  3.         {% for user in users %}  
  4.             <li>{{ user.username|e }}</li>  
  5.         {% endfor %}  
  6.     </ul>  
  7. {% endif %}  
  8.   
  9. {% if kenny.sick %}  
  10.     Kenny is sick.  
  11. {% elseif kenny.dead %}  
  12.     You killed Kenny!  You bastard!!!  
  13. {% else %}  
  14.     Kenny looks okay --- so far  
  15. {% endif %}  

macro标签

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

[html] view plain copy print ?
  1. {% macro input(name, value, type, size) %}  
  2.     <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />  
  3. {% endmacro %}  

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

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

2、参数总是可选的。

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

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

[html] view plain copy print ?
  1. {% import "forms.html" as forms %}  
然后就可以这样使用了

[html] view plain copy print ?
  1. <p>{{ forms.input('username') }}</p>  
  2. <p>{{ forms.input('password', null, 'password') }}</p>  
如果你要在定义macro的模板里使用,就不需要imported 可以使用特殊变量_self

[html] view plain copy print ?
  1. <p>{{ _self.input('username') }}</p>  

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

[html] view plain copy print ?
  1. {% macro input(name, value, type, size) %}  
  2.   <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />  
  3. {% endmacro %}  
  4.   
  5. {% macro wrapped_input(name, value, type, size) %}  
  6.     <div class="field">  
  7.         {{ _self.input(name, value, type, size) }}  
  8.     </div>  
  9. {% endmacro %}  

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

[html] view plain copy print ?
  1. {# forms.html #}  
  2.   
  3. {% macro input(name, value, type, size) %}  
  4.   <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />  
  5. {% endmacro %}  
  6.   
  7. {# shortcuts.html #}  
  8.   
  9. {% macro wrapped_input(name, value, type, size) %}  
  10.     {% import "forms.html" as forms %}  
  11.     <div class="field">  
  12.         {{ forms.input(name, value, type, size) }}  
  13.     </div>  
  14. {% endmacro %}  

filter标签

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

[html] view plain copy print ?
  1. {% filter upper %}  
  2.     This text becomes uppercase  
  3. {% endfilter %}  

[html] view plain copy print ?
  1. {% filter lower|escape %}  
  2.     <strong>SOME TEXT</strong>  
  3. {% endfilter %}  

这篇关于twig网页模板基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019373

相关文章

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas