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脚本的10个技巧(3)
Oct 09 PHP
针对初学PHP者的疑难问答(1)
Oct 09 PHP
比较详细PHP生成静态页面教程
Jan 10 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
laravel框架与其他框架的详细对比
Oct 23 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
xml+php动态载入与分页
2006/10/09 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
JavaScript如何判断input数据类型
2020/02/06 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
python daemon守护进程实现
2016/08/27 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
jupyter notebook清除输出方式
2020/04/10 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
web页面录屏实现
2019/02/12 HTML / CSS
创联软件面试题笔试题
2012/10/07 面试题
对公司合理化的建议书
2014/03/12 职场文书
擅自离岗检讨书
2014/09/12 职场文书
小学生成绩单评语
2014/12/31 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
创业计划书之寿司
2019/07/19 职场文书
alibaba seata服务端具体实现
2022/02/24 Java/Android