PHP框架_Smarty
目录
1.环境搭建
2.基本配置
3.Smarty变量调节器
4.Smarty条件判断
5.Smarty的循环
6.Smarty模板的引用
7.Smarty类与对象的赋值与引用
8.smarty函数插件
1.环境搭建
文件夹目录
|--libs Smarty核心文件
|--demo 开发目录
|--cache 缓存目录
|--template_c 模板编译生成目录
|--tpl 模板目录
|--*.php php文件
2.基本配置
test.php
//引入smarty类
require("../lib/Smarty.class.php"); //实例化对象
$smarty = new Smarty(); //配置Smarty
$smarty->left_delimiter = "{"; //左定界符
$smarty->right_delimiter = "}"; //右定界符
$smarty->template_dir = "tpl"; //模板目录
$smarty->compile_dir = "template_c"; //模板编译生成目录
$smarty->cache_dir = "cache"; //缓存目录 /*Smarty的缓存机制通常不开启*/
//$smarty->caching = true; //开启缓存
//$smarty->cache_lifetime = 120; //缓存时间 //smarty两个基本方法
$smarty->assign('articleTitle',"fuck the sky"); //设置title变量,赋值
$smarty->display('test.html'); //在test.html模板中展示
3.Smarty变量调节器
{* 1.首字母大写capitalize*}
{$articleTitle|capitalize} {* 2.字符串连接 cat*}
{$articleTitle|cat:" yesterday."} {* 3.日期格式化 date_format*}
{$yesterday|date_format}
{* %H:时 %M:分 %S:秒 %Y:年 %B:月 %e:日 %A:星期 *}
{$yesterday|date_format:"%A, %Y %B %e %H:%M:%S"} {* 4.为未赋值或为空的变量指定默认值default*}
{$articleTitle|default:"no title"} {* 5.转码 escape*}
{*用于html转码,url转码。默认是html转码*} {* 6.小写 lower 大写 upper*} {* 7.所有的换行符将被替换成<br /> nl2b*}
{{$articleTitle|nl2br}}
4.Smarty条件判断
{* eq(==) neq(!=)gt(>)lt(<)*}
{* 修饰词时必须和变量或常量用空格格开*} {if $name eq "Ryan"}
Hello Boy.
{elseif $name eq "YY"}
NO.
{else}
Who
{/if}
5.Smarty的循环
test.php中定义$articlelist数组
$articlelist = array(
array(
"title" => "第一篇文章标题",
"author" =>"第一作者",
"content" =>"第一内容"
),
array(
"title" => "第二篇文章标题",
"author" =>"第二作者",
"content" =>"第二内容"
) );
test.html中
{* section循环 *}
{* 1.start 循环执行的初始位置。如果该值为负数,开始位置从数组的尾部算起*}
{* 2 step 该值决定循环的步长。*}
{* 3.设定循环最大执行次数。*}
{* 4.show 决定是否显示该循环。*} {section name=article loop=$articlelist}
{$articlelist[article].title}
{$articlelist[article].author}
{$articlelist[article].content}
<br/>
{/section} {* foreach循环 *}
{foreach $articlelist as $article}
{$article.title}
{$article.author}
{$article.content}
<br/>
{foreachelse}
NULL
{/foreach}
6.Smarty模板的引用
{*include file="header.tpl" *}
7.Smarty类与对象的赋值与引用
test.php中定义myObject类
class myObject{
function meth1($params){
return $params[0]." ".$params[1];
}
}
$myObj = new myObject(); $smarty->assign("myObj",$myObj);
test.html
{$myObj->meth1(array("苹果","炸了"))}
8.smarty函数插件
{* function 函数插件 *}
{*创建Smarty插件:*}
{* 在插件目录里新建文件 类型.插件名.php文件*}
{* 插件方法名字书写规范: smarty_类型_插件名([...]){}*} {* 调用方法:函数名 参数1=数值1 参数2=数值2 *}
{test width=150 height =2} //function.test.php
function smarty_function_test($params){
$width = $params["width"];
$height = $params["height"];
return $width*$height;
}
{* modifiers 修饰插件 *}
{* 调用方法:第一个参数|函数名 其他参数 *}
{$yesterday|test:"Y-m-d h:i:s"} //modifier.test.php
function smarty_modifier_test($utime,$format){
return date($format,$utime);
}
{* block functions 区块函数插件 *}
{test2 replace="true" maxnum=10}
{$str}
{/test2} //block.test2.php
function smarty_block_test2($params,$content){
$replace = $params["replace"];
$maxnum = $params["maxnum"];
if($replace == "true"){
$content = str_replace(",",".",$content);
}
$content = substr($content,0,$maxnum);
return $content;
}
PHP框架_Smarty的更多相关文章
- 避免重复造轮子的UI自动化测试框架开发
一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 旺财速啃H5框架之Bootstrap(五)
在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- 旺财速啃H5框架之Bootstrap(四)
上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- Hibernatel框架关联映射
Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...
随机推荐
- 安装完出现Deprecated: Function ereg_replace() is deprecated in
php5.3说明 先不要用php5.3吧,毕竟目前版本要修改这个工作量太大,而且可能会有很多未知错误,这只能在下一版全部改用perl的正则了,都不明白php官方发 什么神经,此外不支持应该是直接屏 ...
- 在Eclipse中格式化Android代码
我们用Eclipse做Android开发的时候,可以导入Google提供的profile文件,这样每次"Ctrl+Shift+F"的时候,IDE就能够按照官方的规范来进行代码格式化 ...
- 折腾iPhone的生活——运营商信号显示数据化
iOS7以后iphone的信号都是用5个小圆圈显示的,像这样 但是还有种显示方法可以用数字信号显示信号量,比较适合很专注于生活品质的人和对数字有偏爱的人,像这样: 这样还有个好处是可以节约顶部状态栏的 ...
- php将SQL查询结果赋值给变量
2012-03-25 12:12 a786013819 | 分类:数据库DB | 浏览1393次 $sql = "select field1 from pre_common_member_p ...
- Android中的资源文件
最近复习Android资源文件的内容,留下点记录以备后用. Android中的资源主要是指存放在应用程序或者Framework相应包下/res中的内容.它们可以被本地化,如果必要的话会被编译成二进制文 ...
- Little Kings - SGU 223(状态压缩)
题目大意:在一个N*N的棋盘上放置M个国王,已知国王会攻击与它相邻的8个格子,要求放置的额国王不能相互攻击,求放置的方式有多少种. 分析:用dp[row][state][nOne],表示本行状态sta ...
- LianLianKan - HDU 4272(状态压缩)
题目大意:有一列数据,可以从最上面的开始连接下面相同的元素,然后消除,不过距离不能超过6,询问最后能不能消除完整个数列. 分析:首先讨论一点最远能消除的地方,比如点的位置是x,如若想要消除x+1位置处 ...
- OPC客户端的进程安全初始化
现场OPC客户端无法获取远程OPC Server列表,也无法连接OPC Server,经查调用CoCreateInstanceEx()创建IID_IOPCServerList接口正常,但调用IOPCS ...
- Android利用Filter过滤数据
MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; imp ...
- 如何写一个网页标题title的闪动提示(转)
通过网页title来提示用户有新消息这个功能很常见,比如现在的微博,还有一些邮箱,这个功能都很常见.如何实现则个功能呢? 思路是:通过ajax访问后台,若有新消息,则将网页的title替换为 提示信息 ...