<?php
require_once 'inc/libs/Smarty.class.php';
$s=new Smarty();
// echo $s::SMARTY_VERSION;
// echo smarty::SMARTY_VERSION;//输出版本号
$s->debugging=false;
$s->setTemplateDir('html');
$s->assign('title','我的网页');
$s->assign('address',['郑州','北京','上海']);
class st{
public $name="jack";
public $age=20;
public $address="郑州";
}
$st=new st();
$s->assign('st',$st);
$s->display('index.html');
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网站首页</title>
</head>
<body>
<h1>显示学生姓名:{$st->name}</h1>
<h1>{$title}</h1>
<hr>
{*模板的注释语句 *}
{foreach $address as $k=>$v}
{$v}<br>
{foreachelse}
没有数据循环
{/foreach}
</body>
</html>
设定时区
date_default_timezone_set('prc');
分配数据变量
$s->assign('age',100);
index.html读取
<h1>{$age}</h1>
模板注释语句
{*模板注释*}
修饰变量
$s->assign('address',['郑州','北京','上海']);
<h1>{$address[0]}</h1> 只显示一条信息
数组的循环输出
{foreach $address as $k=>$v}
{$v}<br>
{foreachelse}
没有数据循环
{/foreach}
输出下标
{foreach $address as $k=>$v}
{$k}<br>
{foreachelse}
没有数据循环
{/foreach}
{foreach $num as $k=>$v}
{$v}----{$k}---{$v@index}---{$v@first}
---{$v@last}---{$v@total}---{$v@iteration}<br>
{foreachelse}
没有循环数据输出
{/foreach}
{cycle values='green,red,yellow'} 显示隔行的颜色
{foreach $num as $k=>$v}
<span style="color:{cycle values='green,red,yellow'}">
{$v}----{$k}---{$v@index}---{$v@first}
---{$v@last}---{$v@total}---{$v@iteration}<br>
</span>
{foreachelse}
没有循环数据输出
{/foreach }
引入时一定注意此文件的编码要修改为utf-8;
编写一个类在php文件中
class st{ //创建类并读出来
public $name="jack";
public $age=20;
public $address="郑州";
}
$st=new st();
$s->assign('st',$st);
html文件中调用
<h1>显示学生姓名:{$st->name}家庭住址:{$st->address}学生年龄{$st->age}岁</h1>
smarty连接mysql读取数据库的信息
//pdo 查询显示数据
include 'Db.class.php';
$db = new Db();
$s->assign('stu',$db->query('pro','title,img'));
html显示数据
{$v@iteration}显示前面的数字
{foreach $stu as $v}
{$v@iteration}、{$v['title']}<br>
{foreachelse}
没有数据读出
{/foreach}
{counter}记数器
{counter}、kljfdsj<br>
{counter}、dsfksldjf<br>
{counter}、dskf<br>
{counter}、kljfdsj<br>
{counter name=aa skip=1 start=10}、郑州<br>
{counter name=aa}、北京<br>
{counter name=aa}、上海<br>
{counter name=aa}、天津<br>
也可以读出多个字段
{foreach $stu as $v}
{$v@iteration}、{$v['title']}===={$v['img']}<br>
{foreachelse}
没有数据读出
{/foreach}
模板中定义变量并输出直接在html页面直接编写并输出
{*模板文件中定义变量*}
{$age=20}
{$add='郑州'}
{$love=['音乐',20]}
{$age}----{$add}----{$love[0]}//输出
时间格式的函数
{*直接调用函数*}
{date('Y-m-d H:i:s')}<br>
{time()|date_format:'Y-m-d H:i:s'}
{$smarty.server.SERVER_NAME} 获取域名
{$smarty.server.REMOTE_ADDR} 获取客户ip
default 如果接不到值会有默认值|为变量的修饰器或调节符
{$smarty.get.id|default:1}
{$smarty.post.id|default:1}
{$smarty.request.id|default:1}
{$smarty.session.user|default:'jack'}
{literal}
{/literal}
{*忽略不适用模板解析*}
忽略如果不加就会报错否则格式要修改为如下的格式
<script>
function aa(){
alert('ok');
}
aa();
</script>
<script>
function aa(){alert('ok');}
aa();
</script>
或者为加上
{literal}
任何格式都可以出现结果
{literal}
<script>
function aa(){alert('ok');//不换行不能输出
}
aa();
</script>
{/literal}
truncate:数字:要省略显示的符号 表示截取多少个字串 字符串截取
$s->assign('title','aaa的水立方接收到了解放了圣诞节福利圣诞节疯狂两三点');
<h1>{$title|truncate:11:'###'}</h1>
<h1>{$name='打了飞机冻死了房间里撒大家分开了圣诞节分类考试大姐夫'}</h1>
<h1>{$name|truncate:10}</h1>
加密函数的使用
upper转换为大写 ,lower全部转换为小写
$s->assign('title','aaa的水立方接收到了解放了圣诞节福利圣诞节疯狂两三点');
<h1>{$title|default:'未分配'|upper|truncate:11}</h1>
smarty 框架的内置函数max最多循环几次,step为步长
for语句
{for $i=1 to 10}
{$i}
{/for}
while语句
{$n=1}
{while $n<10}
{$n++}
{/while}
当需要导入一个文件时在zend里面没有指定字符集会默认为gbk所以要修改字符集为uft-8
在同级的html文件中编写
{if 1==1 }
ff
{/if}
{$n=1}
if else
{if 1==2}
{else}
yyyy
{/if}
if else if
{if 1==2}
2
{else if 1==3}
3
{else if 1==4}
4
{else}
5
{/if}
{capture assign="info"}
dsflsd<br>
dafd<br>
{time()}
{for $y}
{/capture}
{$info}
{*fetch 抓取其他网页拿过来抓取的只是一个效果*}
{fetch file="http://www.baidu.com"}
{cycle values='red green yellow'}隔行换色
{for $i=1 to 50}
<div style="background-color:{cycle values='green,yellow,red,blue'};margin:20px auto; width:600px;">{$i}</div>
{/for}
php代码单选多选下拉列表
$s->assign('add',['hn'=>'河南省','sh'=>'上海','bj'=>'北京']);
$s->assign('adf',['河南省','上海','北京']);
html代码
{html_checkboxes name='id' options=$add selected='bj' separator=' '}<br>
{html_checkboxes name='id' output=$adf selected=['河南省','北京'] values=$adf separator=' '}<br>
{html_radios name='id' output=$add selected='上海' values=$add separator=' ' }<br>
{html_options name='id' output=$add selected='上海' values=$add separator=' ' }<br>
{html_options name='id' options=$add selected='bj' values=$add separator=' ' }<br>
随机色
if($c=='rand'){
$cs='0123456789abcdef';
$ccc='#';
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$c=$ccc;
}
编写颜色修饰器modifier.cc.php
<?php
function smarty_modifier_cc($string,$c='rand'){
if($c=='rand'){
$cs='0123456789abcdef';
$ccc='#';
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1);
$c=$ccc;
}
return "<span style='color:$c'>$string</span>";
}