模板引擎(smarty)知识点总结
首先我们必须知道使用smarty的流程
1、引入
2、实例化
3、配置 模板目录 编译目录 3.0版本 支持不存在的目录则新建
4、赋值
5、编译显示 某个模板文件(暗示需要哪个文件)
案例1:
include('./lib/Smarty.class.php');$smarty = new Smarty(); $smart->template_dir = './tmp';//设置模板文件目录 $smarty->compile_dir = './comp';//设置编译文件目录 $content = 'smarty学习的第一个小案例'; $smarty->assign('content',$content);////一般而言,assign参数一与参数二对应 参数一的名就是参数二$参数一的名 当然不这样也行 参数二也可以不用变量 参数一与模板的变量对应[这就是大家常
说的模板渲染值,供html等使用] $smarty->display('./tmp/tmp01.html');
html代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>案例1</title>
</head>
<body>
<pre>{$content}</pre>
</body>
</html>
该案列很好说明smarty的使用的流程,初学smarty的同学可以借鉴下。
<!---(针对一维数组)数组的应用--->
1、关联数组:引用方式:$数组名.key
2、索引数组:引用方式:$数组名.key 或者 $数组名[index]
案列2:
<?php
require_once './lib/Smarty.class.php';
$smt = new Smarty();
$smt->template_dir = './tmp';
$smt->compile_dir = './comp';
$arr1 = array('周一','周二','周三');
$arr2 = array('id'=>1,'name'=>'告白气球','author'=>'周杰伦');
$smt->assign('arr1',$arr1);
$smt->assign('arr2',$arr2);
$smt->display('./tmp/tmp02.html');
html代码
<table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
<tbody>
<tr>
<td valign='top' >星期一</td>
<td valign='top' style='color:#f69'>{$arr1[0]}</td>
</tr>
<tr>
<td valign='top'>星期二</td>
<td valign='top'style='color:#f69'>{$arr1[1]}</td>
</tr>
<tr>
<td valign='top'>星期三</td>
<td valign='top'>{$arr1[2]}</td>
</tr>
</tbody>
</table>
<hr/>
<table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
<tbody>
<tr>
<td valign='top' >ID</td>
<td valign='top' style='color:#f69'>{$arr2.id}</td>
</tr>
<tr>
<td valign='top'>歌名</td>
<td valign='top'style='color:#f69'>{$arr2.name}</td>
</tr>
<tr>
<td valign='top'>作者</td>
<td valign='top'>{$arr2.author}</td>
</tr>
</tbody>
</table>
<hr/>
<table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
<tbody>
<tr>
<td valign='top' >周一</td>
<td valign='top' style='color:#f69'>{$arr1.0}</td>
</tr>
<tr>
<td valign='top'>周二</td>
<td valign='top'style='color:#f69'>{$arr1.1}</td>
</tr>
<tr>
<td valign='top'>周三</td>
<td valign='top'>{$arr1.2}</td>
</tr>
</tbody>
</table>
案列2很好的说明数组的使用,那么当我们了解到了smarty的循环的时候就可以将数组元素调用的知识结合起来了
<!--定界符 和 css冲突 的解决方案--->
1、修改标记 $smarty->delimiter 然后在模板文件里使用新的定界符
2、在模板文件里使用 {literal}{/literal}标记非替换的
先说说冲突的所在:smarty默认的定界符是'{','}' html中 css样式的写法是:*{font-size:1rem;} 通过观察不难发现css与smarty的定界符冲突了,这样会导致css样式也被编译解析了,因此就必须解决这个问题
案例3
require_once('./libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = './tmp';
$smarty->compile_dir = './comp';
$like1 = array('name'=>'冯**','jd'=>'初一到初二','element'=>'前后同桌,默默暗恋她,感觉很奇妙,那个时候很开心');
$like3 = array('李**','高一','文科班的同学,前后同桌过,类型很嗨,很好玩,也是暗恋她,还在情*节送她礼物,被她以要是有我朋友的身高就在一起的理由拒绝了');
// 修改定界符 $smarty->delimiter
$smarty->left_delimiter = '{<';
$smarty->right_delimiter = '>}';
$smarty->assign('name',$like1['name']);
$smarty->assign('jd',$like1['jd']);
$smarty->assign('element',$like1['element']);
$smarty->assign('like3',$like3);
$smarty->display('./temp/tmp03.html');
html代码
<!DOCTYPE HTML>
<html>
<head>
<title> 案例3 </title>
<meta charset="utf-8"/>
<script type='text/javascript'>
window.onload=function(){
var tables = document.getElementsByTagName('table');
for(var i=0;i<tables.length;i++){
tables[i].onmouseover=function(){
//alert(this.border);
this.style.backgroundColor = 'yellow';
}
}
}
</script>
<style>
/*
这样带分隔符的样式写法 3.0会自动处理掉
但是不换行的 系统处理不了
table{
background-color:#666;
}
*/
table{background-color:#666;}
</style>
</head> <body>
<table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
<tbody>
<tr>
<td valign='top' >名字</td>
<td valign='top' style='color:#f69'>{<$name>}</td>
</tr>
<tr>
<td valign='top'>阶段</td>
<td valign='top'style='color:#f69'>{<$jd>}</td>
</tr>
<tr>
<td valign='top'>发生的事</td>
<td valign='top'><textarea rows='4' cols='10' readonly='readonly'>{<$element>}</textarea></td>
</tr>
</tbody>
</table>
<hr/>
<table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
<tbody>
<tr>
<td valign='top' >名字</td>
<td valign='top' style='color:#f69'>{<$like3[0]>}</td>
</tr>
<tr>
<td valign='top'>阶段</td>
<td valign='top'style='color:#f69'>{<$like3[1]>}</td>
</tr>
<tr>
<td valign='top'>发生的事</td>
<td valign='top'><textarea rows='4' cols='10' readonly='readonly'>{<$like3[2]>}</textarea></td>
</tr>
</tbody>
</table>
</body>
</html> <!-------------------------------------------------------------------->
{literal){/literal}
在css样式里加入table{literal}{background-color:#666;}{/literal} <!-----------------------------今天的内容就到这里了,后续会继续补充,尽请期待!
模板引擎(smarty)知识点总结的更多相关文章
- PHP的模板引擎smarty原理是什么(整理)
PHP的模板引擎smarty原理是什么(整理) 一.总结 一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个ph ...
- PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...
- Php模板引擎Smarty安装和配置
Smarty 是PHP的一个模板引擎,是由Monte Ohrt 和 Andrei Zmievski 使用PHP语言开发的,发展至今已成为一个非常流行的模板引擎,Smarty 提供了一种易于管理和使用的 ...
- php模板引擎smarty
一. smarty的特点 速度:相对于其他模板引擎,速度较快 编译型:在下次访问模板时直接访问编译文件,不再进行模板重新编译 缓存技术:可以将用户最终看到的HTML文件缓存成一个静态HTML 插件技术 ...
- php模板原理PHP模板引擎smarty模板原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- PHP的模板引擎smarty原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- Smarty模板引擎技术
Smarty模板引擎技术 什么是模板引擎? 什么是Smarty模板引擎? 为何选择Smarty模板引擎? 如何使用Smarty模板引擎? 一.历史背景 场景一:回顾之前编写PHP项目的方式 //链接数 ...
- 推荐13款javascript模板引擎
javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...
- js模板引擎介绍搜集
js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...
- php的模板引擎
设计一个交互式的网站,我们需要关注两个主要的问题:分别是图形用户界面和业务逻辑.例如,一个标准的web开发小组由两三个美工和三个程序员组成,则设计流程是:美工设计者制作了项目的网站的界面模板,然后把它 ...
随机推荐
- PHP+Redis 实例【二】页面缓存 新玩法
今天算是认识到博客园里的审查团队多内幕了,哈哈,贴个图玩下. 气死宝宝了. 进入主题! 今天就不写什么功能性的了,换下口味说下关于页面级的缓存,应该怎么做. 相信有很多小伙伴查了百度,甚至google ...
- 75、django之ORM补充
本篇导航: QuerySet 中介模型 查询优化 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. > ...
- ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述
ShoneSharp语言(S#)的设计和使用介绍 系列(4)- 入门概述 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...
- # WPF动画速率效果
在WPF中使用动画的情况非常多,而要让动画变得生动往往要使用一些变速动画,WPF也内置了很方便的缓动函数来实现这一功能. 除此之外,WPF还有关键帧动画,利用关键帧动画能够很好的控制动画的细节,与美工 ...
- 转:JAVA里面的int类型 和Integer类型,有什么不一样
JAVA里面的int类型 和Integer类型,有什么不一样 原文链接:http://blog.csdn.net/wuxinliulei/article/details/11099565 java.l ...
- Emrips 反质数枚举 javascript实现
今天看到一个kata,提出一个"emirps"的概念:一个质数倒转后得到的是一个不同的质数,这个数叫做"emirps". 例如:13,17是质数,31,71也是 ...
- UWP 邮件反馈
在我们构建App的时候,一个很人性化的设计就是增加邮件反馈渠道,就是让用户直接发邮件给你反馈. 当然,你也可以用系统自带的"反馈中心"(超级无敌难用,还经常打不开),或者使用商店的 ...
- React学习笔记--程序调试
React学习笔记 二 程序调试 前面我们搭建好了React的基本开发环境,可以编写基本的React js程序了.但完成的开发环境肯定包含调试器,怎么调试用React编写的JS程序呢?有浏览器,比 ...
- java学习总结篇一--写在正式成为码农一年后
一直想写一写工作了一年多的总结与感悟,今天正好有时间,也有这个兴致,随手总结一下这一年来学习及工作的情况. 大学时很无奈地被选择了计算机专业,本人对计算机,不讨厌,也算不上多喜欢.只是当惯了好学生,好 ...
- 10.0.0.55_12-16训练赛部分writeup
0x1 - MISC MISC100 一张帅行的照片 目测是图片隐写,但是binwalk并没有出来,应该是对文件头进行了修改 010editor查看一下,发现在jpg文件尾之后还有大量的数据 而且在灰 ...