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高级对象构建 工厂模式的使用
Feb 05 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
ini_set的用法介绍
Jan 07 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
微信支付扫码支付php版
Jul 22 PHP
php批量删除操作(数据访问)
May 23 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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
Terran历史背景
2020/03/14 星际争霸
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
Javascript与flash交互通信基础教程
2008/08/07 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
自荐信格式的六要素
2013/09/21 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
司法建议书范文
2014/05/13 职场文书
身边的榜样活动方案
2014/08/20 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
就业协议书
2014/09/12 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
60句有关成长的名言
2019/09/04 职场文书