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生成EXCEL的东东
Oct 09 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
php遍历文件夹下的所有文件和子文件夹示例
Mar 20 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
微信支付开发告警通知实例
Jul 12 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
AJAX的使用方法详解
2017/04/29 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
戴森美国官网:Dyson美国
2016/09/11 全球购物
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
小学生新学期寄语
2014/01/19 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
怎样写好工作计划
2019/04/10 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle