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

下载本文档

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

文档简介

TWIG 模板设计 快速入门手册 中文 分类: php 2012-01-09 09:55 3872人阅读 评论(2) 收藏 举报 inputincludewhitespacestylesheethtmloutput目录(?)+写了好几篇关于twig的东西。居然还没写个快速入门之类的。现在就写来源/doc/templates.html概要twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以。模板内的 变量 和 表达式 会在运行的时候被解析替换,标签(tags)会来控制模板的逻辑下面是个最小型的模板,用来说明一些基础的东西html view plaincopyprint?1. 2. 3. 4. MyWebpage5. 6. 7. 8. %foriteminnavigation%9. item.caption10. %endfor%11. 12. 13. MyWebpage14. a_variable15. 16. 里面包含两种符号 % . % 和 . 第一种用来控制的比如for循环什么的,第二个是用来输出变量和表达式的ide 支持很多ide 都对twig进行高亮支持。大伙自己找需要的吧。 Textmatevia theTwig bundle Vimvia theJinja syntax plugin Netbeansvia theTwig syntax plugin PhpStorm(native as of 2.1) Eclipsevia theTwig plugin Sublime Textvia theTwig bundle GtkSourceViewvia theTwig language definition(used by gedit and other projects) CodaandSubEthaEditvia theTwig syntax mode变量程序会传递给模板若干变量,你需要在模板里输出他们。例如输出 $hellohtml view plaincopyprint?1. hello如果传递给模板的是对象或者数组,你可以使用点 . 来输出对象的属性或者方法,或者数组的成员。或者你可以使用下标的方式。html view plaincopyprint?1. foo.bar2. foobar如果你访问的值不存在就会返回null。TWIG有一整套的流程来确认值是否存在。for.bar会进行以下操作。如果 foo是个数组,就尝试返回bar成员,如果不存在的话,往下继续。如果foo是个对象,会尝试返回bar属性,如果不存在的话,往下继续。会尝试运行bar方法,如果不存在的话,往下继续。会尝试运行getBar方法,如果不存在的话,往下继续。会尝试运行isBar方法,如果不存在的话,返回nullforbar 就简单很多了 for必须是个数组,尝试返回bar成员,如果不就返回null全局变量TWIG定义了有一些全局变量 _self 这个参看macro标签 _context这个就是当前的环境 _charset: 当前的字符编码变量赋值具体参见set标签html view plaincopyprint?1. %setfoo=foo%2. %setfoo=1,2%3. %setfoo=foo:bar%过滤器 Firters变量可以被过滤器修饰。过滤器和变量用(|)分割开。过滤器也是可以有参数的。过滤器也可以被多重使用。下面这例子就使用了两个过滤器。html view plaincopyprint?1. name|striptags|titlestriptas表示去除html标签,title表示每个单词的首字母大写。更多过滤器参见我博客过滤器也可以用在代码块中,参见 filter标签html view plaincopyprint?1. %filterupper%2. Thistextbecomesuppercase3. %endfilter%函数 Function这个没什么好说的,会写程序的都知道,TWIG内置了一些函数,参考我的博客举个例子 返回一个0到3的数组,就使用 range函数html view plaincopyprint?1. %foriinrange(0,3)%2. i,3. %endfor%流程控制支持for循环 和 if/elseif/else结构。直接看例子吧,没什么好说的。html view plaincopyprint?1. Members2. 3. %foruserinusers%4. user.username|e5. %endfor%6. html view plaincopyprint?1. %ifusers|length0%2. 3. %foruserinusers%4. user.username|e5. %endfor%6. 7. %endif%注释# . # 包围的内容会被注释掉,可以是单行 也可以是多行。载入其他模板详见include标签(我博客内已经翻译好哦),会返回经过渲染的内容到当前的模板里html view plaincopyprint?1. %includesidebar.html%当前模板的变量也会传递到 被include的模板里,在那里面可以直接访问你这个模板的变量。比如html view plaincopyprint?1. %forboxinboxes%2. %includerender_box.html%3. %endfor%在 render_box.html 是可以访问 box变量的加入其他参数可以使被载入的模板只访问部分变量,或者完全访问不到。参考手册模板继承TWIG中最有用到功能就是模板继承,他允许你建立一个“骨骼模板”,然后你用不同到block来覆盖父模板中任意到部分。而且使用起来非常到简单。我们先定义一个基本骨骼页base.html 他包含许多block块,这些都可以被子模板覆盖。html view plaincopyprint?1. 2. 3. 4. %blockhead%5. 6. %blocktitle%endblock%-MyWebpage7. %endblock%8. 9. 10. %blockcontent%endblock%11. 12. %blockfooter%13. Copyright2011byyou.14. %endblock%15. 16. 17. 我们定义了4个block块,分别是 block head, block title, block content, block footer注意1、block是可以嵌套的。2、block可以设置默认值(中间包围的内容),如果子模板里没有覆盖,那就直接显示默认值。比如block footer ,大部分页面你不需要修改(省力),但你需要到时候仍可以方便到修改(灵活)下面我看下 子模板应该怎么定义。html view plaincopyprint?1. %extendsbase.html%2. 3. %blocktitle%Index%endblock%4. %blockhead%5. parent()6. 7. .importantcolor:#336699;8. 9. %endblock%10. %blockcontent%11. Index12. 13. Welcomeonmyawesomehomepage.14. 15. %endblock%注意 % extends base.html % 必须是第一个标签。其中 block footer就没有定义,所以显示父模板中设置的默认值如果你需要增加一个block的内容,而不是全覆盖,你可以使用 parent函数html view plaincopyprint?1. %blocksidebar%2. TableOfContents3. .4. parent()5. %endblock%extends标签只能有一个,所以你只能有一个父模板,但有种变通到方法来达到重用多个模板到目的,具体参见手册的use标签HTML转义主要是帮助转义 尖括号等 , &, 可以有两种办法。一种是用标签,另一种是使用过滤器。其实TWIG内部就是调用 php 的htmlspecialchars 函数html view plaincopyprint?1. user.username|e2. user.username|e(js)3. 4. %autoescapetrue%5. Everythingwillbeautomaticallyescapedinthisblock6. %endautoescape%因为是TWIG的操作符,如果你需要输出两个花括号,最简单到办法就是html view plaincopyprint?1. 还可以使用 raw 标签和raw 过滤器,详细参考手册html view plaincopyprint?1. %raw%2. 3. %foriteminseq%4. item5. %endfor%6. 7. %endraw%macros宏宏有点类似于函数,常用于输出一些html标签。这里有个简单示例,定义了一个输出input标签的宏。html view plaincopyprint?1. %macroinput(name,value,type,size)%2. 3. %endmacro%宏参数是没有默认值的,但你可以通过default过滤器来实现。一般来说宏会定义在其他到页面,然后通过import标签来导入,html view plaincopyprint?1. %importforms.htmlasforms%2. 3. forms.input(username)你也可以只导入一个文件中部分宏,你还可以再重命名。html view plaincopyprint?1. %fromforms.htmlimportinputasinput_field,textarea%2. 3. 4. Username5. input_field(username)6. Password7. input_field(password,type=password)8. 9. textarea(comment)上面的代码表示 从forms.html中导入了 input 和 textarea宏,并给input重命名为input_field。表达式TWIG允许你在任何地方使用表达式,他的规则和PHP几乎一模一样,就算你不会PHP 仍然会觉得很简单。最简单的有字符串:“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 view plaincopyprint?1. %setfoo=1,foo:bar%运算符包括数字运算+ - * / %(求余数) /(整除) *(乘方)html view plaincopyprint?1. 2*3=62. 2*3=8逻辑运算 and or not比较运算 = = = !=包含运算 in 以下的代码会返回 truehtml view plaincopyprint?1. 1in1,2,32. cdinabcde测试运算 is 这个不用多说 直接看代码html view plaincopyprint?1. nameisodd2. %ifloop.indexisdivisibleby(3)%3. %ifloop.indexisnotdivisibleby(3)%4. #isequivalentto#5. %ifnot(loop.indexisdivisibleby(3)%其他操作符. 建立一个指定开始到结束的数组,他是range函数的缩写,具体参看手册html view plaincopyprint?1. %foriin0.3%2. i,3. %endfor%4. | 使用一个过滤器html view plaincopyprint?1. #outputwillbeHELLO#2. hello|upper 强制字符串连接html view plaincopyprint?1. Helloname!?: 三元操作符html view plaincopyprint?1. foo?yes:no. 得到一个对象的属性,比如以下是相等的。html view plaincopyprint?1. foo.bar2. foobar你还可以在一个字符串内部插入一个表达式,通常这个表达式是变量。 格式是 #表达式html view plaincopyprint?1. foo#barbaz2. foo#1+2baz空白控制和 php一样,在TWIG模板标签之后的第一个换行符会被自动删掉,其余的空白(包括 空格 tab 换行等)都会被原样输出。使用spaceless标签就可以删除这些HTML标签之间的空白html view plaincopyprint?1. %spaceless%2. 3. foo4. 5. %endspaceless%6. 7. #outputwillbef

温馨提示

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

评论

0/150

提交评论