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 Sql Server连接失败问题及解决办法
Aug 07 PHP
PHP 存储文本换行实现方法
Jan 05 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP中类与对象功能、用法实例解读
Mar 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
PHP生成静态页面详解
2006/11/19 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
简单解决Python文件中文编码问题
2015/11/22 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Django多数据库的实现过程详解
2019/08/01 Python
python统计字符的个数代码实例
2020/02/07 Python
numpy库reshape用法详解
2020/04/19 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
.NET程序员的几道面试题
2012/06/01 面试题
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
招聘与培训专员岗位职责
2014/01/30 职场文书
陈欧的广告词
2014/03/18 职场文书
服务之星事迹材料
2014/05/03 职场文书
有关环保的标语
2014/06/13 职场文书
教师师德工作总结2015
2015/07/22 职场文书
《落花生》教学反思
2016/02/16 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
入党申请书怎么写?
2019/06/11 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS
python实现简单的三子棋游戏
2022/04/28 Python
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL