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 相关文章推荐
How do I change MySQL timezone?
Mar 26 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
实例分析10个PHP常见安全问题
Jul 09 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
PHP5多态性与动态绑定介绍
2015/04/03 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
连接Python程序与MySQL的教程
2015/04/29 Python
Python批量转换文件编码格式
2015/05/17 Python
python在不同层级目录import模块的方法
2016/01/31 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
Mac安装python3的方法步骤
2019/08/09 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
python中count函数知识点浅析
2020/12/17 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
中专毕业生的自我鉴定
2013/12/01 职场文书
村党支部换届选举方案
2014/05/02 职场文书
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL
GPU服务器的多用户配置方法
2022/07/07 Servers