首先我们必须知道使用smarty的流程
   1、引入
   2、实例化
   3、配置 模板目录  编译目录  3.0版本 支持不存在的目录则新建
   4、赋值
   5、编译显示 某个模板文件(暗示需要哪个文件)

案例1:

  1. include('./lib/Smarty.class.php');$smarty = new Smarty();
  2.  
  3.     $smart->template_dir = './tmp';//设置模板文件目录
  4.  
  5.     $smarty->compile_dir = './comp';//设置编译文件目录
  6.  
  7.     $content = 'smarty学习的第一个小案例';
  8.  
  9.     $smarty->assign('content',$content);////一般而言,assign参数一与参数二对应 参数一的名就是参数二$参数一的名 当然不这样也行 参数二也可以不用变量 参数一与模板的变量对应[这就是大家常
    说的模板渲染值,供html等使用]
  10.  
  11. $smarty->display('./tmp/tmp01.html');

html代码:

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>案例1</title>
  6. </head>
  7. <body>
  8. <pre>{$content}</pre>
  9. </body>
  10. </html>

该案列很好说明smarty的使用的流程,初学smarty的同学可以借鉴下。

<!---(针对一维数组)数组的应用--->

1、关联数组:引用方式:$数组名.key
    2、索引数组:引用方式:$数组名.key  或者 $数组名[index]

案列2:

  

  1. <?php
  2. require_once './lib/Smarty.class.php';
  3. $smt = new Smarty();
  4. $smt->template_dir = './tmp';
  5. $smt->compile_dir = './comp';
  6. $arr1 = array('周一','周二','周三');
  7. $arr2 = array('id'=>1,'name'=>'告白气球','author'=>'周杰伦');
  8. $smt->assign('arr1',$arr1);
  9. $smt->assign('arr2',$arr2);
  10. $smt->display('./tmp/tmp02.html');

html代码

  1. <table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
  2. <tbody>
  3. <tr>
  4. <td valign='top' >星期一</td>
  5. <td valign='top' style='color:#f69'>{$arr1[0]}</td>
  6. </tr>
  7. <tr>
  8. <td valign='top'>星期二</td>
  9. <td valign='top'style='color:#f69'>{$arr1[1]}</td>
  10. </tr>
  11. <tr>
  12. <td valign='top'>星期三</td>
  13. <td valign='top'>{$arr1[2]}</td>
  14. </tr>
  15. </tbody>
  16. </table>
  17. <hr/>
  18. <table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
  19. <tbody>
  20. <tr>
  21. <td valign='top' >ID</td>
  22. <td valign='top' style='color:#f69'>{$arr2.id}</td>
  23. </tr>
  24. <tr>
  25. <td valign='top'>歌名</td>
  26. <td valign='top'style='color:#f69'>{$arr2.name}</td>
  27. </tr>
  28. <tr>
  29. <td valign='top'>作者</td>
  30. <td valign='top'>{$arr2.author}</td>
  31. </tr>
  32. </tbody>
  33. </table>
  34. <hr/>
  35. <table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
  36. <tbody>
  37. <tr>
  38. <td valign='top' >周一</td>
  39. <td valign='top' style='color:#f69'>{$arr1.0}</td>
  40. </tr>
  41. <tr>
  42. <td valign='top'>周二</td>
  43. <td valign='top'style='color:#f69'>{$arr1.1}</td>
  44. </tr>
  45. <tr>
  46. <td valign='top'>周三</td>
  47. <td valign='top'>{$arr1.2}</td>
  48. </tr>
  49. </tbody>
  50. </table>

案列2很好的说明数组的使用,那么当我们了解到了smarty的循环的时候就可以将数组元素调用的知识结合起来了

<!--定界符 和 css冲突  的解决方案--->

1、修改标记 $smarty->delimiter 然后在模板文件里使用新的定界符
   2、在模板文件里使用 {literal}{/literal}标记非替换的

先说说冲突的所在:smarty默认的定界符是'{','}' html中 css样式的写法是:*{font-size:1rem;} 通过观察不难发现css与smarty的定界符冲突了,这样会导致css样式也被编译解析了,因此就必须解决这个问题

案例3

  1. require_once('./libs/Smarty.class.php');
  2. $smarty = new Smarty();
  3. $smarty->template_dir = './tmp';
  4. $smarty->compile_dir = './comp';
  5. $like1 = array('name'=>'冯**','jd'=>'初一到初二','element'=>'前后同桌,默默暗恋她,感觉很奇妙,那个时候很开心');
  6. $like3 = array('李**','高一','文科班的同学,前后同桌过,类型很嗨,很好玩,也是暗恋她,还在情*节送她礼物,被她以要是有我朋友的身高就在一起的理由拒绝了');
  7. // 修改定界符 $smarty->delimiter
  8. $smarty->left_delimiter = '{<';
  9. $smarty->right_delimiter = '>}';
  10. $smarty->assign('name',$like1['name']);
  11. $smarty->assign('jd',$like1['jd']);
  12. $smarty->assign('element',$like1['element']);
  13. $smarty->assign('like3',$like3);
  14. $smarty->display('./temp/tmp03.html');

html代码

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title> 案例3 </title>
  5. <meta charset="utf-8"/>
  6. <script type='text/javascript'>
  7. window.onload=function(){
  8. var tables = document.getElementsByTagName('table');
  9. for(var i=0;i<tables.length;i++){
  10. tables[i].onmouseover=function(){
  11. //alert(this.border);
  12. this.style.backgroundColor = 'yellow';
  13. }
  14. }
  15. }
  16. </script>
  17. <style>
  18. /*
  19. 这样带分隔符的样式写法 3.0会自动处理掉
  20. 但是不换行的 系统处理不了
  21. table{
  22. background-color:#666;
  23. }
  24. */
  25. table{background-color:#666;}
  26. </style>
  27. </head>
  28.  
  29. <body>
  30. <table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
  31. <tbody>
  32. <tr>
  33. <td valign='top' >名字</td>
  34. <td valign='top' style='color:#f69'>{<$name>}</td>
  35. </tr>
  36. <tr>
  37. <td valign='top'>阶段</td>
  38. <td valign='top'style='color:#f69'>{<$jd>}</td>
  39. </tr>
  40. <tr>
  41. <td valign='top'>发生的事</td>
  42. <td valign='top'><textarea rows='4' cols='10' readonly='readonly'>{<$element>}</textarea></td>
  43. </tr>
  44. </tbody>
  45. </table>
  46. <hr/>
  47. <table border='1' cellspacing='0' cellpadding='0' style='text-align:center'>
  48. <tbody>
  49. <tr>
  50. <td valign='top' >名字</td>
  51. <td valign='top' style='color:#f69'>{<$like3[0]>}</td>
  52. </tr>
  53. <tr>
  54. <td valign='top'>阶段</td>
  55. <td valign='top'style='color:#f69'>{<$like3[1]>}</td>
  56. </tr>
  57. <tr>
  58. <td valign='top'>发生的事</td>
  59. <td valign='top'><textarea rows='4' cols='10' readonly='readonly'>{<$like3[2]>}</textarea></td>
  60. </tr>
  61. </tbody>
  62. </table>
  63. </body>
  64. </html>
  65.  
  66. <!-------------------------------------------------------------------->
    {literal){/literal}
    在css样式里加入table{literal}{background-color:#666;}{/literal}
  67.  
  68. <!-----------------------------今天的内容就到这里了,后续会继续补充,尽请期待!

模板引擎(smarty)知识点总结的更多相关文章

  1. PHP的模板引擎smarty原理是什么(整理)

    PHP的模板引擎smarty原理是什么(整理) 一.总结 一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个ph ...

  2. PHP模板引擎Smarty内建函数section,sectionelse用法详解

    本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...

  3. Php模板引擎Smarty安装和配置

    Smarty 是PHP的一个模板引擎,是由Monte Ohrt 和 Andrei Zmievski 使用PHP语言开发的,发展至今已成为一个非常流行的模板引擎,Smarty 提供了一种易于管理和使用的 ...

  4. php模板引擎smarty

    一. smarty的特点 速度:相对于其他模板引擎,速度较快 编译型:在下次访问模板时直接访问编译文件,不再进行模板重新编译 缓存技术:可以将用户最终看到的HTML文件缓存成一个静态HTML 插件技术 ...

  5. php模板原理PHP模板引擎smarty模板原理浅谈

    mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...

  6. PHP的模板引擎smarty原理浅谈

    mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...

  7. Smarty模板引擎技术

    Smarty模板引擎技术 什么是模板引擎? 什么是Smarty模板引擎? 为何选择Smarty模板引擎? 如何使用Smarty模板引擎? 一.历史背景 场景一:回顾之前编写PHP项目的方式 //链接数 ...

  8. 推荐13款javascript模板引擎

    javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...

  9. js模板引擎介绍搜集

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  10. php的模板引擎

    设计一个交互式的网站,我们需要关注两个主要的问题:分别是图形用户界面和业务逻辑.例如,一个标准的web开发小组由两三个美工和三个程序员组成,则设计流程是:美工设计者制作了项目的网站的界面模板,然后把它 ...

随机推荐

  1. 项目实战——企业级Zabbix监控实战(一)

    项目实战--企业级Zabbix监控实战 实验一:Zabbix监控的搭建 1.实验准备 centos系统服务器3台. 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源. 防火墙关闭. 各节点 ...

  2. .meta和模型贴图丢失

    一些策划的工程里经常出现模型贴图丢失,同样的工程,其他人没有问题.就算全部还原,也无法解决,最后只要美术在它的工程里重新关联贴图.一次偶然的机会,我发现把模型和贴图的.meta文件删除,让unity重 ...

  3. 关于java' web杂谈(其实是课后作业1)1 网站系统开发需要掌握的技术

    1 网站系统开发需要掌握的技术:(借鉴度娘)https://zhidao.baidu.com/question/1701850648247880220.html 需要掌握的有:Java(JavaEE) ...

  4. Spring集成Redis缓存

    作者:13 GItHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 整合Redis 本来以为类似的Redis教程和整合代码应该会很多,因 ...

  5. (译)ABP之依赖注入

    原文地址:https://aspnetboilerplate.com/Pages/Documents/Dependency-Injection 什么是依赖注入 传统方式的问题 解决方案 构造函数注入 ...

  6. QTP生成随机数字+字母

    以下函数实现随机生成17位数(包括字母和数字),仍有改进的空间,可根据具体要求适当修改 Dim targetstring '调用返回函数给变量.Function过程通过函数名返回一个值 targets ...

  7. HDU1248--完全背包

    寒冰王座 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. CCF-201312-4-有趣的数

    问题描述 试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, ...

  9. java 内部类 嵌套类

    .markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI" ...

  10. 【Java入门提高篇】Day9 Java内部类——静态内部类

    今天来说说Java中的最后一种内部类--静态内部类 所谓的静态内部类,自然就是用static修饰的内部类,那用static修饰过后的内部类,跟一般的内部类相比有什么特别的地方呢? 首先,它是静态的,这 ...