smarty模板的使用方法实例分析


Posted in PHP onSeptember 18, 2019

本文实例讲述了smarty模板的使用方法。分享给大家供大家参考,具体如下:

这里以smarty3为例

首先, 在官网下载smarty3模板文件,然后解压。

在解压之后的文件夹中,libs是smarty模板的核心文件,demo里面有示例程序。

我们把libs文件夹复制到我们的工作目录,然后重命名为smarty。

smarty模板的使用方法实例分析

假设我们在controller目录下的index.php中使用smarty模板。

index.php

<?php
require '../smarty/Smarty.class.php';
$smarty = new Smarty;
$smarty->debugging = false;  //开启debug模式
$smarty->caching = true;  //开启缓存
$smarty->cache_lifetime = 120; //缓存时间
$smarty->left_delimiter = '<{';  //左定界符
$smarty->right_delimiter = '}>';  //右定界符
$smarty->template_dir = __DIR__.'/../view/';  //视图目录
$smarty->compile_dir = __DIR__ . '/../smarty/compile/';  //编译目录
$smarty->config_dir = __DIR__ . '/../smarty/configs/'; //配置目录
$smarty->cache_dir = __DIR__ . '/../smarty/cache/';  //缓存目录
$list = range('A', 'D');
$smarty->assign("list", $list);
$smarty->assign("name", "zhezhao");
$smarty->display('index.html');

模板文件index.html

<html>
<head>
  <title></title>
</head>
<body>
  <p><h1><{$name}></h1></p>
  <{foreach $list as $k=>$v }>
    <p><h1><{$k}> : <{$v}></h1></p>
  <{/foreach}>
</body>
</html>

上述方法的优点是使用起来配置比较简单,缺点也是显而易见的,我们controller目录下可能有很多页面调用smarty模板,在每个页面都需要将上述方法配置一遍。

解决方法有两种:

将smarty模板的配置信息写到一个文件中,然后其他页面可以通过包含该文件使用smarty对象。

require '../smarty/Smarty.class.php';
$smarty = new Smarty;
$smarty->debugging = false;  //开启debug模式
$smarty->caching = true;  //开启缓存
$smarty->cache_lifetime = 120; //缓存时间
$smarty->left_delimiter = '<{';  //左定界符
$smarty->right_delimiter = '}>';  //右定界符
$smarty->template_dir = __DIR__.'/../view/';  //视图目录
$smarty->compile_dir = __DIR__ . '/../smarty/compile/';  //编译目录
$smarty->config_dir = __DIR__ . '/../smarty/configs/'; //配置目录
$smarty->cache_dir = __DIR__ . '/../smarty/cache/';  //缓存目录

我们自己编写一个类,继承自Smarty类,然后将配置信息写在构造函数中。

我们编写mySmarty类

<?php
require '../smarty/Smarty.class.php';
class mySmarty extends Smarty{
  public function __construct(array $options = array()){
    parent::__construct($options);
    $this->debugging = false; //开启debug模式
    $this->caching = true; //开启缓存
    $this->cache_lifetime = 120;  //缓存时间
    $this->left_delimiter = '<{'; //左定界符
    $this->right_delimiter = '}>'; //右定界符
    $this->setTemplateDir(__DIR__.'/../view/');  //视图目录
    $this->setCompileDir(__DIR__ . '/../smarty/compile/'); //编译目录
    $this->setConfigDir(__DIR__ . '/../smarty/configs/'); //配置目录
    $this->setCacheDir(__DIR__ . '/../smarty/cache/'); //缓存目录
  }
}

此时,controller里面的index.php代码可优化为:

<?php
require 'mySmarty.php';
$smarty = new mySmarty;
$list = range('A', 'D');
$smarty->assign("list", $list);
$smarty->assign("name", "zhezhao");
$smarty->display('index.html');

最后送上福利:smarty3 chm官方文档

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

PHP 相关文章推荐
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
PHP代码实现表单数据验证类
Jul 28 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
PHP 验证身份证是否合法的函数
Feb 09 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 #PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 #PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 #PHP
PHP实现批量修改文件名的方法示例
Sep 18 #PHP
php DES加密算法实例分析
Sep 18 #PHP
php实现QQ小程序发送模板消息功能
Sep 18 #PHP
php文件后缀不强制为.php的实操方法
Sep 18 #PHP
You might like
PDO::errorInfo讲解
2019/01/28 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
python设计模式大全
2016/06/27 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
汽车转让协议书范本
2014/12/07 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
预备党员转正材料
2014/12/19 职场文书
英语教师个人总结
2015/02/09 职场文书
债务追讨律师函
2015/06/24 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android