博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Smarty基础用法
阅读量:5279 次
发布时间:2019-06-14

本文共 2470 字,大约阅读时间需要 8 分钟。

一、Smarty基础用法:1、基础用法如下include './smarty/Smarty.class.php';//引入smarty类$smarty = new Smarty();//实例化smarty$smarty->template_dir = './dir';//设置默认模板路径(当前如果有模版,优先找当前目录,没有再找定义的目录)$smarty->left_delimiter = '<{'; //设置边界符$smarty->right_delimiter = '}>';//设置边界符$smarty->caching = true;//开启缓存$smarty->cache_lifetime = 120; //缓存生命周期(秒)$t = '北京真TM好';//注:assign 可以传递所有数据类型(资源除外)//然后在模板中单一型变量可以直接{$t}//数组{$t['name']}或{$t.name}//对象{$t->name}或其方法{$t->test()}$smarty->assign('t',$t);//传参到模板$smarty->display('2.html');//渲染(展示模板)2、smarty中的系统变量其中一些如下:$smarty.now ,被解析成 time();$smarty.get.key ---> $_GET[key]$smarty.const.常量---> echo 常量名3、从配置文件得到的变量例:x x x .conf配置项1=值1配置项2=值2配置文件的载入{Config_load file="x x x .conf"}引用配置选项的值建议用后者,即中括号语法,兼容性更强{$smarty.config.配置项}或者{#配置项#}xxx.conf //不用管后缀,就当是配置文件aa=123bb=456<{Config_load file="xxx.conf"}>

<{$smarty.config.aaa}>

总结: 模板中的变量有 模板中的变量有 3种来源 种来源1: assign赋值得到的变量 , 存储在_tpl_vars属性中2: $smarty系统变量, 对于cookie,session,get,post,$_SERVER等信息,存储在_smarty属性中   Smarty会自动捕捉,并保存起来,形成系统变量,可以直接用标签来引用.3: 从配置文件读取的变量 , 存储在_config属性中;   定界符冲突的问题 定界符冲突的问题   如果smarty用定界符,比如 {,},   此定界在js,css里都有很可能碰到,如果碰到,会当成smarty标签来解析,进而引发错误发生.1: 换定界符,如 {> <}2: 用literal标签,"原义","字符意义的","无夸张的"   例: {literal}h1{background:gray}{/literal} ---> 一般不用二、判断、循环、运算   判断 判断{if $ss === xxx}xxxx{else if $xx ===xx}xxxxx{else}xxxx{/if}循环 循环//4.html{foreach $new as $k=>$v}{$v.title}{$v.id}{/foreach}模板中的运算符 模板中的运算符//4.html{foreach $new as $k=>$v}{$v.title}{$v.id *4}{/foreach}变量调节器 变量调节器date_format [格式化日期]default [默认值]escape [编码]indent [缩进]low er [小写]nl2br [换行符替换成 <\br />]replace [替换]strip [去除(多余空格)]strip_tags [去除html标签]upper [大写]display 和fetch的区别 的区别display 调用的ftech方法即: display() = echo fetch();包含子模板 包含子模板头部尾部的文件引用等,很实用;{include file='./xxx.html' }缓存 缓存开启缓存//6.php$sm->caching = true;//开启缓存$sm->cache_lifetime = 120; //缓存生命周期(秒)$smarty->isCached() 判断是否有缓存,如果有缓存,则用缓存,避免数据交互操作默认情况下:smarty会自动生成一个文件夹templates_c来存放被替换的模板文件 如果开启了缓存,smarty会生成一个cache文件夹来存放被缓存的文件单模板多缓存 单模板多缓存1个模板还可以根据其他参数,缓存多个结果,比如商品页面根据商品id来为每个商品缓存一个页面如下,$id就代表不同的商品id,然后每个id会生成一个缓存文件if(!$sm->isCached('7.html',$id)){ $sm->assign('a',$id);}$sm->display('7.html',$id);局部缓存 局部缓存不缓存标签可以以不缓存的方式assign()变量。适用于单个标签不缓存。例:$foo = 'ttttt';$smarty->assign('foo',$foo,true); //第三个参数 true 不缓存那么在模板中 这个{$foo} 会变成
而不是tttttnocache  标签 在模板中,不需要缓存的地方,用 {nocached}{/nocached} 包住.适用于大段的不缓存效果html模板例: {nocache}{$smarty.now }{/nocache}模板调用 模板调用 PHP函数 函数模板中用{insert name=xx } 直接调用PHP中的insert_xx函数

转载于:https://www.cnblogs.com/lauhp/p/7999338.html

你可能感兴趣的文章
js学习笔记8
查看>>
SSH整合
查看>>
java--迭代范型化 HashMap
查看>>
mysql初级命令day01学习笔记
查看>>
CF43A Football
查看>>
DISCUZ论坛开发点滴
查看>>
CWnd *和HWnd转换 分类: VC++ ...
查看>>
JS监听手机端浏览器的后退按钮的事件方法
查看>>
note02-计算机网络
查看>>
day03-函数基础
查看>>
python——函数 20、三元表达式、列表推导式、生成器表达式
查看>>
(前端)html与css,html 8、div和span标签
查看>>
jndi
查看>>
centOS6下安装lamp
查看>>
JSP项目中使用ueditor(百度编辑器)
查看>>
前端之JavaScript笔记2
查看>>
Unique Paths
查看>>
热更新脚本C#light,ulua,Scorpio性能比较
查看>>
disconf 2.6.36 install
查看>>
python第一百一十八天---ajax--图片验证码 + Session
查看>>