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 相关文章推荐
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
php中stream(流)的用法
Mar 25 PHP
php中session过期时间设置及session回收机制介绍
May 05 PHP
php文件下载处理方法分析
Apr 22 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 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读取csv实现csv文件下载功能
2013/12/18 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
nginx下安装php7+php5
2016/07/31 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
python计算时间差的方法
2015/05/20 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
浅析使用Python操作文件
2017/07/31 Python
python批量修改图片大小的方法
2018/07/24 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
python超时重新请求解决方案
2019/10/21 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
关于礼仪的演讲稿
2014/01/04 职场文书
学员自我鉴定
2014/03/19 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书