TWIG模板设计快速入门手册中文_第1页
TWIG模板设计快速入门手册中文_第2页
TWIG模板设计快速入门手册中文_第3页
TWIG模板设计快速入门手册中文_第4页
TWIG模板设计快速入门手册中文_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 HYPERLINK /jiaochangyun/article/details/7180758 TWIG 模板设计 快速入门手册 中文 分类: HYPERLINK /jiaochangyun/article/category/956880 php 2012-01-09 09:55 3872人阅读 HYPERLINK /jiaochangyun/article/details/7180758 l comments 评论(2) HYPERLINK javascript:void(0); o 收藏 收藏 HYPERLINK /jiaochangyun/article/details/7180758

2、 l report o 举报 举报 HYPERLINK /tag/input t _blank input HYPERLINK /tag/include t _blank include HYPERLINK /tag/whitespace t _blank whitespace HYPERLINK /tag/stylesheet t _blank stylesheet HYPERLINK /tag/html t _blank html HYPERLINK /tag/output t _blank output目录 HYPERLINK /jiaochangyun/article/details/

3、7180758 o 系统根据文章中H1到H6标签自动生成文章目录 (?) HYPERLINK /jiaochangyun/article/details/7180758 o 展开 +写了好几篇关于twig的东西。居然还没写个快速入门之类的。现在就写来源 HYPERLINK /doc/templates.html /doc/templates.html概要twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以。模板内的 变量 和 表达式 会在运行的时候被

4、解析替换,标签(tags)会来控制模板的逻辑下面是个最小型的模板,用来说明一些基础的东西html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?MyWe

5、bpage%foriteminnavigation%item.caption%endfor%MyWebpagea_variable里面包含两种符号 % . % 和 . 第一种用来控制的比如for循环什么的,第二个是用来输出变量和表达式的ide 支持很多ide 都对twig进行高亮支持。大伙自己找需要的吧。Textmatevia the HYPERLINK https:/githu/Anomareh/PHP-Twig.tmbundle Twig bundleVimvia the HYPERLINK /2/documentation/integration

6、 Jinja syntax pluginNetbeansvia the HYPERLINK http:/plugibe/plugin/37069/php-twig Twig syntax pluginPhpStorm(native as of 2.1)Eclipsevia the HYPERLINK https:/githu/pulse00/Twig-Eclipse-Plugin Twig pluginSublime Textvia the HYPERLINK https:/githu/Anomareh/PHP-Twig.tmbundle Twig bundleGtkSourceViewvia

7、 the HYPERLINK https:/githu/gabrielcorpse/gedit-twig-template-language Twig language definition(used by gedit and other projects)CodaandSubEthaEditvia the HYPERLINK https:/githu/bobthecow/Twig-HTML.mode Twig syntax mode变量程序会传递给模板若干变量,你需要在模板里输出他们。例如输出 $hellohtml HYPERLINK /jiaochangyun/article/detail

8、s/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?hello如果传递给模板的是对象或者数组,你可以使用点 . 来输出对象的属性或者方法,或者数组的成员。或者你可以使用下标的方式。html HYPERLINK /jiaochangyu

9、n/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?foo.barfoobar如果你访问的值不存在就会返回null。TWIG有一整套的流程来确认值是否存在。for.bar会进行以下操作。如果 foo是个

10、数组,就尝试返回bar成员,如果不存在的话,往下继续。如果foo是个对象,会尝试返回bar属性,如果不存在的话,往下继续。会尝试运行bar方法,如果不存在的话,往下继续。会尝试运行getBar方法,如果不存在的话,往下继续。会尝试运行isBar方法,如果不存在的话,返回nullforbar 就简单很多了 for必须是个数组,尝试返回bar成员,如果不就返回null全局变量TWIG定义了有一些全局变量_self 这个参看macro标签_context这个就是当前的环境_charset: 当前的字符编码变量赋值具体参见set标签html HYPERLINK /jiaochangyun/articl

11、e/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%setfoo=foo%setfoo=1,2%setfoo=foo:bar%过滤器 Firters变量可以被过滤器修饰。过滤器和变量用(|)分割开。过滤器也是可以有参

12、数的。过滤器也可以被多重使用。下面这例子就使用了两个过滤器。html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?name|striptags|tit

13、lestriptas表示去除html标签,title表示每个单词的首字母大写。更多过滤器参见我博客过滤器也可以用在代码块中,参见 filter标签html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/arti

14、cle/details/7180758 o ? ?%filterupper%Thistextbecomesuppercase%endfilter%函数 Function这个没什么好说的,会写程序的都知道,TWIG内置了一些函数,参考我的博客举个例子 返回一个0到3的数组,就使用 range函数html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaoc

15、hangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%foriinrange(0,3)%i,%endfor%流程控制支持for循环 和 if/elseif/else结构。直接看例子吧,没什么好说的。html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o c

16、opy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?Members%foruserinusers%user.username|e%endfor%html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o cop

17、y copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%ifusers|length0%foruserinusers%user.username|e%endfor%endif%注释# . # 包围的内容会被注释掉,可以是单行 也可以是多行。载入其他模板详见include标签(我博客内已经翻译好哦),会返回经过渲染的内容到当前的模板里html HYPERLINK /jiaochangyun/article/d

18、etails/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%includesidebar.html%当前模板的变量也会传递到 被include的模板里,在那里面可以直接访问你这个模板的变量。比如html HYPERLINK /ji

19、aochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%forboxinboxes%includerender_box.html%endfor%在 render_box.html 是可以

20、访问 box变量的加入其他参数可以使被载入的模板只访问部分变量,或者完全访问不到。参考手册模板继承TWIG中最有用到功能就是模板继承,他允许你建立一个“骨骼模板”,然后你用不同到block来覆盖父模板中任意到部分。而且使用起来非常到简单。我们先定义一个基本骨骼页base.html 他包含许多block块,这些都可以被子模板覆盖。html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy cop

21、y HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%blockhead%blocktitle%endblock%-MyWebpage%endblock%blockcontent%endblock%blockfooter%Copyright2011byyou.%endblock%我们定义了4个block块,分别是 block head, block title, block content, block foote

22、r注意1、block是可以嵌套的。2、block可以设置默认值(中间包围的内容),如果子模板里没有覆盖,那就直接显示默认值。比如block footer ,大部分页面你不需要修改(省力),但你需要到时候仍可以方便到修改(灵活)下面我看下 子模板应该怎么定义。html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/de

23、tails/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%extendsbase.html%blocktitle%Index%endblock%blockhead%parent().importantcolor:#336699;%endblock%blockcontent%IndexWelcomeonmyawesomehomepage.%endblock%注意 % extends base.html % 必须是第一个标签。其中 block footer就没有定义,所以显示父模板中设置的默认

24、值如果你需要增加一个block的内容,而不是全覆盖,你可以使用 parent函数html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%blocksi

25、debar%TableOfContents.parent()%endblock%extends标签只能有一个,所以你只能有一个父模板,但有种变通到方法来达到重用多个模板到目的,具体参见手册的use标签HTML转义主要是帮助转义 尖括号等 , &, 可以有两种办法。一种是用标签,另一种是使用过滤器。其实TWIG内部就是调用 php 的htmlspecialchars 函数html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/detai

26、ls/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?user.username|euser.username|e(js)%autoescapetrue%Everythingwillbeautomaticallyescapedinthisblock%endautoescape%因为是TWIG的操作符,如果你需要输出两个花括号,最简单到办法就是html HYPERLINK /j

27、iaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?还可以使用 raw 标签和raw 过滤器,详细参考手册html HYPERLINK /jiaochangyun/article/d

28、etails/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%raw%foriteminseq%item%endfor%endraw%macros宏宏有点类似于函数,常用于输出一些html标签。这里有个简单示例,定义了一个输出inp

29、ut标签的宏。html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%macroinput(name,value,type,size)%endmacr

30、o%宏参数是没有默认值的,但你可以通过default过滤器来实现。一般来说宏会定义在其他到页面,然后通过import标签来导入,html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/detai

31、ls/7180758 o ? ?%importforms.htmlasforms%forms.input(username)你也可以只导入一个文件中部分宏,你还可以再重命名。html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jia

32、ochangyun/article/details/7180758 o ? ?%fromforms.htmlimportinputasinput_field,textarea%Usernameinput_field(username)Passwordinput_field(password,type=password)textarea(comment)上面的代码表示 从forms.html中导入了 input 和 textarea宏,并给input重命名为input_field。表达式TWIG允许你在任何地方使用表达式,他的规则和PHP几乎一模一样,就算你不会PHP 仍然会觉得很简单。最简单的

33、有字符串:“hello world” 或者 hello world 数字:42 或者 42.33数组:a,b,c哈希:a:av, b:bv 其中keys 可以不要引号 也可以是数字 还可以是一个表达式,比如a:av, b:bv 1:1v, 2:2v 1+2:12v逻辑: true 或者 false最后还有null你可以嵌套定义html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy

34、 HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%setfoo=1,foo:bar%运算符包括数字运算+ - * / %(求余数) /(整除) *(乘方)html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy

35、 copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?2*3=62*3=8逻辑运算 and or not比较运算 = = = !=包含运算 in 以下的代码会返回 truehtml HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/718

36、0758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?1in1,2,3cdinabcde测试运算 is 这个不用多说 直接看代码html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy

37、 copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?nameisodd%ifloop.indexisdivisibleby(3)%ifloop.indexisnotdivisibleby(3)%#isequivalentto#%ifnot(loop.indexisdivisibleby(3)%其他操作符. 建立一个指定开始到结束的数组,他是range函数的缩写,具体参看手册html HYPERLINK /j

38、iaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?%foriin0.3%i,%endfor%| 使用一个过滤器html HYPERLINK /jiaochangyun/articl

39、e/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?#outputwillbeHELLO#hello|upper 强制字符串连接html HYPERLINK /jiaochangyun/article/details/

40、7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?Helloname!?: 三元操作符html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plai

41、n HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?foo?yes:no. 得到一个对象的属性,比如以下是相等的。html HYPERLINK /jiaochangyun/article/details/7180758 o view plain view plain HYPERLINK /jiaochangyun/article/details/7180758 o copy copy HYPERLINK /jiaochangyun/article/details/7180758 o print print HYPERLINK /jiaochangyun/article/details/7180758 o ? ?foo.barfoobar你还可以在一个字符串内部插入一个表达式,通常这个表达式是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论