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 相关文章推荐
PHP Ajax实现页面无刷新发表评论
Jan 02 PHP
PHP5 安装方法
Jan 15 PHP
一个简单的php实现的MySQL数据浏览器
Mar 11 PHP
php foreach 使用&(与运算符)引用赋值要注意的问题
Feb 16 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
php格式化电话号码的方法
Apr 24 PHP
PHP中余数、取余的妙用
Jun 29 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
php写入txt乱码的解决方法
Sep 17 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
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
解决laravel session失效的问题
2019/10/14 PHP
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
百度地图api如何使用
2015/08/03 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
Python常用模块介绍
2014/11/21 Python
深入理解python中的select模块
2017/04/23 Python
Sanic框架路由用法实例分析
2018/07/16 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
应届毕业生的自我鉴定
2013/11/13 职场文书
同学聚会老师邀请函
2014/01/28 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
机关工会工作总结2015
2015/05/26 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
python神经网络Xception模型
2022/05/06 Python
win10搭建配置ftp服务器的方法
2022/08/05 Servers