CodeIgniter整合Smarty的方法详解


Posted in PHP onAugust 25, 2017

本文实例讲述了CodeIgniter整合Smarty的方法。分享给大家供大家参考,具体如下:

CI3.0.2发布后感觉模板类还是不怎么好用,而且不能编译。Smarty功能强大,用习惯了Smarty标签,一般难以放弃,而且,是可以编译文件执行,速度快,我们可以把它们整合使用,弥补CI的模板功能的不足。我们整合使用的是CI版本3.0.3及 Smarty版本3.1.27。下面描述整合过程。

1、下载smarty-3.1.27

2 、解压smarty-3.1.27到CI项目中的application\libraries下面,其他的文件删除。

3、 在application\libraries目录下创建Ci_smarty.php文件,代码如下:

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require(APPPATH.'libraries/smarty-3.1.27/libs/Smarty.class.php');
class Ci_smarty extends Smarty {
 protected $ci;
 public function __construct()
 {
 parent::__construct();
 $this->ci = & get_instance();
 $this->ci->load->config('smarty');//加载smarty的配置文件
 $this->cache_lifetime =$this->ci->config->item('cache_lifetime');
 $this->caching = $this->ci->config->item('caching');
 $this->config_dir = $this->ci->config->item('config_dir');
 $this->template_dir = $this->ci->config->item('template_dir');
 $this->compile_dir = $this->ci->config->item('compile_dir');
 $this->cache_dir = $this->ci->config->item('cache_dir');
 $this->use_sub_dirs = $this->ci->config->item('use_sub_dirs');
 $this->left_delimiter = $this->ci->config->item('left_delimiter');
 $this->right_delimiter = $this->ci->config->item('right_delimiter');
 }
}

4、在application\config目录下创建配置文件smarty.php,代码如下:

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['cache_lifetime'] = 60;
$config['caching'] = false;
$config['template_dir'] = APPPATH .'views';
$config['compile_dir'] = APPPATH .'views/template_c';
$config['cache_dir'] = APPPATH . 'views/cache';
$config['config_dir'] = APPPATH . 'views/config';
$config['use_sub_dirs'] = false; //子目录变量(是否在缓存文件夹中生成子目录)
$config['left_delimiter'] = '{';
$config['right_delimiter'] = '}';

5、在application\core创建MY_controller.php,代码如下:

class MY_controller extends CI_Controller {
 public function __construct() {
 parent::__construct();
 }
 public function assign($key,$val)
 {
 $this->ci_smarty->assign($key,$val);
 }
 public function display($html)
 {
 $this->ci_smarty->display($html);
 }
}

至此,配置整合工作over了,下面我们要验证是否配置成功。

7、修改application\controllers的Welcome.php,代码如下:

defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends MY_controller {
 public function index()
 {
 $test='ci 3.0.3 + smarty 3.1.27 配置成功';
 $this->assign('test',$test);
 $this->display('test.html');
 }
}

然后,在application\views下创建test.html文件,代码如下:

{$test}

在浏览器地址栏中输入:http://localhost/index.php/Welcome

结果显示:

ci 3.0.3 + smarty 3.1.27 配置成功

大功告成!

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
ASP知识讲座四
Oct 09 PHP
PHP网上调查系统
Oct 09 PHP
php基础知识:类与对象(5) static
Dec 13 PHP
PHP中动态显示签名和ip原理
Mar 28 PHP
php中拷贝构造函数、赋值运算符重载
Jul 25 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
PHP观察者模式原理与简单实现方法示例
Aug 25 #PHP
PHP实现的策略模式简单示例
Aug 25 #PHP
php实现简单的权限管理的示例代码
Aug 25 #PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 #PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 #PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 #PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 #PHP
You might like
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
PHP获取文件行数的方法
2015/06/10 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
js图片处理示例代码
2014/05/12 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Python通过Pillow实现图片对比
2020/04/29 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
优秀的自荐信要注意哪些
2014/01/03 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
贷款委托书怎么写
2014/08/02 职场文书
三好生演讲稿
2014/09/12 职场文书
六一儿童节标语
2014/10/08 职场文书
创业计划书之美甲店
2019/09/20 职场文书