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生成excel时单元格内换行问题的解决方法
Aug 26 PHP
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
laravel学习教程之关联模型
Jul 30 PHP
PHP中overload与override的区别
Feb 13 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 PHP
PHP实现微信对账单处理
Oct 01 PHP
PHP获取当前系统时间的方法小结
Oct 03 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
php 在线打包_支持子目录
2008/06/28 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
PHP 文件上传限制问题
2019/09/01 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
javascript Array.remove() 数组删除
2009/08/06 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
如何写毕业求职自荐信
2013/11/06 职场文书
25岁生日感言
2014/01/13 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
邀请函样本
2015/02/02 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书