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 03 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
laravel-admin的图片删除实例
Sep 30 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
apache rewrite_module模块使用教程
2008/01/10 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
php命令行写shell实例详解
2018/07/19 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
让复选框只能选择一项的方法
2013/10/08 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
浅谈python中的占位符
2017/11/09 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
解析Python3中的Import
2019/10/13 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
运动会入场词60字
2014/02/15 职场文书
公司业务员岗位职责
2014/03/18 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
感谢信怎么写
2015/01/21 职场文书
城南旧事电影观后感
2015/06/16 职场文书
婚宴新娘致辞
2015/07/28 职场文书
合作意向书范本
2019/04/17 职场文书