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 相关文章推荐
PHP4在WinXP下IIS和Apache2服务器上的安装实例
Oct 09 PHP
新闻分类录入、显示系统
Oct 09 PHP
PHP 存储文本换行实现方法
Jan 05 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
详解YII关联查询
Jan 10 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
PHP判断是否是json字符串
Apr 01 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
一个php作的文本留言本的例子(三)
2006/10/09 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python中精确输出JSON浮点数的方法
2014/04/18 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
光声世纪笔试题目
2012/08/25 面试题
自我评价的写作规则
2014/01/06 职场文书
六一节目主持词
2014/04/01 职场文书
致共产党员倡议书
2014/04/16 职场文书
机动车登记业务委托书
2014/10/08 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
公司催款律师函
2015/05/27 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
单位病假条范文
2015/08/17 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Java后台生成图片的完整步骤
2021/08/04 Java/Android