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安全编程之加密功能
Oct 09 PHP
PHP开发过程中常用函数收藏
Dec 14 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
Jun 05 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
php计算title标题相似比的方法
Jul 29 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
在Laravel 中实现是否关注的示例
Oct 22 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
javascript 单选框,多选框美化代码
2008/08/01 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
jQuery each()方法的使用方法
2010/03/18 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
js仿360开机效果
2019/12/26 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
Python笔记之工厂模式
2019/11/20 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
远东集团网络工程师面试题
2014/10/20 面试题
机电一体化毕业生求职信
2013/11/02 职场文书
服装行业创业计划书范文
2014/02/05 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
高一语文教学反思
2016/02/16 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js
Linux中文件的基本属性介绍
2022/06/01 Servers