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 02 PHP
使用PHP编写的SVN类
Jul 18 PHP
php之readdir函数用法实例
Nov 13 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
Aug 03 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
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
详解JS预解析原理
2020/06/16 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
python学习数据结构实例代码
2015/05/11 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Django 内置权限扩展案例详解
2019/03/04 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
python实现密码强度校验
2020/03/18 Python
python属于软件吗
2020/06/18 Python
Python通过字典映射函数实现switch
2020/11/06 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
保安自我鉴定范文
2013/12/08 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
车辆工程专业求职信
2014/06/14 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
员工离职证明范本
2015/06/12 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python