设为首页 收藏本站
查看: 703|回复: 0

[经验分享] php学习笔记(三十八)smarty中的内建函数的使用

[复制链接]

尚未签到

发表于 2017-4-13 08:48:52 | 显示全部楼层 |阅读模式
  init.smarty.php


<?php
define("ROOT", ".");
//解决问题:Warning: strftime() [function.strftime]:
date_default_timezone_set("Asia/Shanghai");
include ROOT."/libs/Smarty.class.php";
$tpl = new Smarty();
//smarty初始化
$tpl->template_dir=ROOT."/templates/";
$tpl->compile_dir=ROOT."/templates_c/";
//配置文件位置
$tpl->config_dir=ROOT."/configs/";
$tpl->left_delimiter="<!--{";
$tpl->right_delimiter="}-->";
?>


mysmarty.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!--{config_load file="view.conf" section="one"}-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><!--{$title}--></title>
</head>
<body>
<!--{include file="header.html"}-->
<!--{capture name="cat"}-->
capture<br>
<!--{/capture}-->
<!--{$smarty.capture.cat}-->

<!--{if $num == 1}-->
#####1
<!--{elseif $num eq 2}-->
#####2
<!--{else $num == 3}-->
#####3
<!--{/if}-->
<br>
<!--{foreach from="$row1" item="val" name="one"}-->
<!--{$val}--><br>
<!--{foreachelse}-->
数组为空,或没有分配
<!--{/foreach}-->
<!--{$smarty.foreach.one.total}-->
<br>
<!--{foreach from="$row2" item="val2" key="k" name="two"}-->
<!--{$k}-->==<!--{$val2}--><br>
<!--{foreachelse}-->
数组为空,或没有分配
<!--{/foreach}-->

<tableborder="1">
<!--{foreach from="$data" item="row" name="outer"}-->
<!--{if $smarty.foreach.outer.iteration is even}-->
<tr bgcolor="#cccccc">
<!--{elseif $smarty.foreach.outer.first}-->
<tr bgcolor="red">
<!--{elseif $smarty.foreach.outer.last}-->
<tr bgcolor="blue">
<!--{else}-->
<tr>
<!--{/if}-->
<!--{foreach from="$row" item="col" name="inner"}-->
<td>
<!--{$col}--><br>
</td>
<!--{foreachelse}-->
<td>数组为空,或没有分配</td>
<!--{/foreach}-->
</tr>
<!--{foreachelse}-->
<tr><td>数组为空,或没有分配</td></tr>
<!--{/foreach}-->
</table>
共计<!--{$smarty.foreach.one.total}-->行<br>

<!--{section loop=$sec name="ls"}-->
<!--{$sec[ls]}-->
<!--{sectionelse}-->
数组为空,或没有分配
<!--{/section}-->
<tableborder="1" width="800">
<!--{section loop=$secT name="ls" max="3" start="8" step="6"}-->
<tr>
<td><!--{$smarty.section.ls.rownum}--></td>
<td><!--{$smarty.section.ls.index}--></td>
<td><!--{$secT[ls].id}--></td>
<td><!--{$secT[ls].name}--></td>
<td><!--{$secT[ls].price}--></td>
<td>
<!--{section loop=$secT[ls].sub name="lsin"}-->
<!--{$secT[ls].sub[lsin].one}-->
<!--{$secT[ls].sub[lsin].two}-->
<!--{/section}-->
</td>
</tr>
<!--{sectionelse}-->
<tr><td>数组为空,或没有分配</td></tr>
<!--{/section}-->
</table>
<br>
</body>
</html>


header.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><!--{$title}--></title>
</head>
<body>
这是个文件头
</body>
</html>


mysmarty.php
<?php
/**
*
* 以下所有使用变量都要基于设定的前缀和后缀<!--{}-->
* 内建函数使用
* 一:内建函数
* 在模板中的调用方式都是和使用Html标记类似
* smarty内部的函数,只能按照系统提供的方式使用,不可以修改,也不能添加和删除
* 使用范围:
* 流程控制 if
* 数组的遍历
* 文件操作(包含、配置文件导入)
*
* 二:自定义函数
* 1.可以通过注解和smarty插件方式,加入自己的函数到smarty中,相当于扩展
* 2.系统提供的自定义函数可以修改
*
* 三:常用的内建函数
* config_load:<!--{config_load file="view.conf" section="one"}-->
* include:<!--{include file="header.html"}-->(子模板要注意变量的接收)
*
* if,elseif,else
* <!--{if $num == 1}-->
* #####1
* <!--{elseif $num eq 2}-->
*#####2
* <!--{else $num == 3}-->
* #####3
* <!--{/if}-->
*判断条件:(太多)
*eq(相等)、ne(不相等)、neq(不相等)、gt(大于)、lt(小于)、lte(小于等于)、
*le(小于等于)、gte(大于等于)、ge(大于等于)、is even(是否是偶数)、is odd(是否是奇数)
*is not even(是否是偶数)、is not odd(是否是奇数)、not(非/反)、mod(求模)、
*div by($a/$b整除)、even by($a/$b%2==0,相除再判断是否是偶数)、odd by(相除再判断是否是奇数)、
*===(相等包括类型)、==、!=、>、<、<=、>=
*
* foreach,foreeachesle
* foreach和php的foreach用法相同,多了一个foreeachesle(数组为空执行)
* name和key可以不添加;name是起名字;key是取下标值
* <!--{foreach from="$row2" item="val2" key="k" name="two"}-->
* <!--{$k}-->==<!--{$val2}--><br>
* <!--{foreachelse}-->
* 数组为空,或没有分配
* <!--{/foreach}-->
*
* 保留变量获取循环的信息
* 循环次数:<!--{$smarty.foreach.one.total}-->
* 循环标号:<!--{$smarty.foreach.one.iteration}-->
* 循环第一次:<!--{$smarty.foreach.one.first}-->
* 循环最后一次:<!--{$smarty.foreach.one.last}-->
*
* section(建议使用section;但是不支持关联数组,需要将关联数组先转换)
* **所遍历的只能是下标连续的索引数组
* 一:效率高于foreach(底层实现是for循环,for循环比foreach效率高)
* 二:要比foreach功能多
*
* capture:(隐藏,将变量保存下来,用$smarty.capture来使用)
* <!--{capture name="cat"}-->
* capture<br>
* <!--{/capture}-->
* 使用:<!--{$smarty.capture.cat}-->
* php(潜入php代码,不建议使用)
* <!--{php}-->
* <!--{/php}-->
*
*/
//如果文件加载失败require会停止继续解析php;而include则会继续向下执行
require 'init.smarty.php';
$title="这是一个文字标题";
$mysqli = new mysqli("localhost","root","root","hibernate");
$result = $mysqli->query("select id,name,price from users");
$row1 = $result->fetch_row();
$row2 = $result->fetch_assoc();
$data=array();
$sect=array();
while ($row=$result->fetch_assoc()){
$data[]=$row;
$row["sub"]=array(array("one"=>"aa","two"=>"bb"));
$sect[]=$row;
}
$tpl->assign("title",$title);
$tpl->assign("var",true);
$tpl->assign("num",2);
$tpl->assign("row1",$row1);
$tpl->assign("row2",$row2);
$tpl->assign("data",$data);
//下标是连续的索引数组
$row1[]="ww";
$tpl->assign("sec",$row1);
$tpl->assign("secT",$sect);
//模板文件名可以随便定义:比如:mysmarty.tpl只有内容是html就可以了
$tpl->display("mysmarty.html");
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-364192-1-1.html 上篇帖子: 繁体中文转换为简体中文的PHP函数 下篇帖子: 广州传智播客PHP培训班搞出游活动啦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表