ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.38KB ,
资源ID:9090897      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9090897.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Smarty的简单指南.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Smarty的简单指南.docx

1、Smarty的简单指南Smarty是什么,能做什么 Smarty是一个php模板引擎。更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法。 如果把开发者分为两种2种角色:programmer and designer(翻译成程序员和美工似乎贴切一点),那么Smarty就是为美工(designer)设计的。这个两种角色基本上不可能是一个人兼任, 具体到我们的工作中,ui + fe基本等于designer,rd = programmer。所以我们fe来接受模板是最符合smarty的设计初衷,是最合适不过。 最理想的情况下,如果有一天rd想要改变文章检索的方式(也就是程序逻辑的改变)

2、。这个改变不影响模板,内容仍将准确的输出到模板。同样的,如果哪 天只是要完全重做界面,也不会影响到程序逻辑。因此,rd可以改变逻辑而不需要重新构建模板,我们可以改变模板而不影响到逻辑。 这里只是介绍对我们模版设计者有用的地方,至于是否作缓存等服务器端的问题,我们不关心。 Smarty安装 Smarty安装非常简单,从 第一个Smarty 这里是最最最简单的smarty例子,把index.php置于yourwebfolder下,把Index.tpl置于yourwebfoldertemplates下。模版目录名字可以自己设定。 Index.php template_dir = ./template

3、s;/设置模板目录$smarty-compile_dir = ./templates_c; /设置编译目录$smarty-left_delimiter = right_delimiter = ;$smarty-assign(name, ctl); /进行模板变量替换$smarty-assign(str, hello smarty!); /$smarty-display(index.tpl); /编译并显示位于./templates下的index.tpl模板?Index.tpl Insert title here,output: ctl,hello smarty!(默认的语法标签标志符号是和,与

4、js冲突,所以一般都换成,以下所以例子都是使用自定义的标志符号) 实际开发中php不用我们操心,这部分是由rd负责。我们关心的是tpl,和数据变量(如$name,$str)。虽然在smarty模版 (tpl)中可以嵌入php代码,但是这种做法把本来分离开的逻辑和展现又混淆了,所以是强烈不推荐的。另外在模版里头嵌入php代码会引起rd的不安 (就如同rd写了一段js,嵌入页面中会引起咱们的不安一样)。 Smarty的语法标签 smary中有很多的标签,大多数只适合某些场景,这里列出最常用到的几种 输出变量内容 tpl: output: hello world!注意:中间不能使用php的函数。 变

5、量调节器 就是字面意思,把变量输出的值按照一定逻辑进行变换。Smarty提供了很多变量调节器,不过都针对于英文。 count_characters 字符长度。汉字在gbk方式下长度是2,uft-8方式下长度是3。 tpl: /参数true代表是否计算空格output: 1211escape 转义。 tpl: /把& 变成字符实体output: ' hello& world'regex_replace 正则替换 tpl: output: hello smarty!strip 用一个空格或一个给定字符替换所有重复空格,换行和制表符. tpl: output: hello

6、 world!组合变量调节器 所有的变量调节器都可以组合使用 tpl: output: Hello& world!条件if,elseif,else 可以使用以下条件修饰词:eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、div by、even by、odd by、=、!=、=. 使用这些修饰词时必须和变量或常量用空格格开。逻辑符号同js一致 tpl: Hello,world!. Hello,smarty!. Hello!循环foreach,foreachelse 循环简单数组 tpl

7、: index: isfirst: islast: Output: iteration:1isfirst:trueislast:falseitem0iteration:2isfirst:falseislast:trueitem1cycle 用于轮转一组数值。例如常见的表格隔行变色 tpl: tr bgcolor= OUTPUT: 1 2 3capture capture函数的作用是捕获模板输出的数据并将其存储到一个变量里,而不是把它们输出到页面. tpl: a var value:output: a var value:i1 i2 i3eval 功能类似于js中的eval,就是把变量内容当作模

8、版来解析。 tpl: *str=hello world! code = *output: hello world!smarty与js smarty不错,灵活应用它所提供的语法标签能够实现绝大部分需求。不过,有的需求用smarty模板来做的确复杂低效,或者干脆就没办法做到。这个时候,就靠js了。 简单说就是把模版中的数据拼成json来用js处理。 例1: smarty的变量调节器提供的截断功能不支持中文。下面是一个截断的例子。 tpl: function truncation (str) for(var j = 0,c = 0;jstr.length & c 128) c+; return st

9、r.substr(0,j)+(str.lengthj?.:); document.write(truncation();output: 一二三四五.例2: 需求:一组数据分两列显示,数据过长时需要换行。两列要对齐,不能有空行。 这里需求什么,js实现了什么不重要,只要知道这里的数据的展现繁杂一点,需要js来参合。 tpl: function creat3mulu(array) var c = 0; for (var i = 0, l = array.length;i 42) c+; c+; var banl = Math.round(c/2); var left = ; var right =

10、 ; left.push(); right.push(); c = 0; for (var i = 0, l = array.length;i l;i = i + 2) c+; if (c 42) c+; left.push() right.push() return left.join() + right.join(); , , var _tempHtml = creat3mulu(); document.write(_tempHtml);这里面比较有价值的代码是 , , 这部分作用就是拼出一个js数组出来,拼出来的内容并不输出,而是储存在一个变量json中,以便后面的模板使用。 outpu

11、t:10,.,50,.,.把这段代码稍加修改就是拼一个json object出。 : , output:10:content0,50:content1, .这部分模板作用是拼出一个js字符串。可以想象的到如果data变量中有回车,双引号,那么肯定会报js错误。变量调节器|strip|escape:html就是去换行和字符实体转义(血淋淋的经验啊) var _tempHtml = creat3mulu(); document.write(_tempHtml);这里面$json就是前面拼好的json,不过里面含有大量的换行,$json|strip去换行。 我个人觉得为了效率,用js作为smarty模板的补充,用smarty来拼结构简单的json串很不错,也非常高效。但是如果json格式比较复杂,拿模板来拼json一方面加大了工作量,一方面也增加了风险,提高了出现bug的概率。 所以,如果需要json非常复杂,还是要与rd商定接口,让rd来提供json。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1