CodeIgniter整合Smarty的方法详解

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

(0)

相关推荐

  • CodeIgniter启用缓存和清除缓存的方法

    Codeigniter支持缓存技术,以达到最快的速度.尽管CI已经相当高效了,但是网页中的动态内容.主机的内存CPU和数据库读取速度等因素直接影响了网页的加载速度.依靠网页缓存,你的网页可以达到近乎静态网页的加载速度,因为他们将程序输出的结果保存到硬盘上了. 缓存是怎么工作的? CI支持每个页面单独缓存,而且可以设置缓存更新时间.当一个网页第一次被加载的时候,缓存文件将被保存到application/cache文件夹.下次访问的时候,系统就会直接读取缓存文件,然后返回给用户的浏览器.如果缓存文件

  • CodeIgniter辅助函数helper详解

    1.辅助函数概述 helper辅助函数,顾名思义,就是帮助我们完成各种特定任务的一系列函数.并且每个辅助函数文件是一系列的功能集合汇总在一起.比如可以帮助我们创建链接的URL Helpers,有创建表的Form Helpers,有文本格式化输出的Text Helpers,有设置和读取cookie的Cookie Helpers,还有文件File Helpers等等. 不同于大多数其他系统的是,CodeIgniter的辅助函数没有采用类的方式实现.而是简单的,程序的功能.每个辅助函数处理一个特定的任

  • Codeigniter中集成smarty和adodb的方法

    本文实例讲述了Codeigniter中集成smarty和adodb的方法.分享给大家供大家参考,具体如下: 在CodeIgniter中要写自己的库,就需要写两个文件,一个是在application/init下面的init_myclass.php文件(如果没有init目录,自己创建).另外一个就是在application/libraries目录下创建myclass.php文件. 这里myclass是你的类名.一些规则大家看手册就好了,我这里直接就说步骤了. 1)在application/libra

  • Codeigniter整合Tank Auth权限类库详解

    相交其他CodeIgniter的类库,tank_auth,配置简单,使用也简单,并且作者也一直在更新,现在是1.0.9.1.0.8已经支持CI2.0了,我现在一般的项目都是用它,所以推荐给大家. 安装Tankauth的步骤 下载最新版类库(下载地址:http://www.konyukhov.com/soft/tank_auth/tank_auth.zip) 解压文件将application下相应的文件复制到你的CIapplication文件夹下.将captcha文件夹复制到你的CI文件夹(项目目

  • 让codeigniter与swfupload整合的最佳解决方案

    codeigniter是一款轻量,便捷的MVC框架,最近的项目涉及到批量上传,于是,就是用了swfupload这个插件,虽然网上有很多关于ci与swfupload的帖子,不过,并不是很完整,所以,这里综合各家优点,经过自己实际经验,做了下整理. 问题1:获取不到文件类型? 回答: 由于SWFUPLOAD所有类型文件的MIME均为application/octet-stream,故使用Codeigniter自带的上传类无法准确获取是否为图片,根据ci官方的wiki已经给出了解答 In your v

  • CI(CodeIgniter)框架配置

    MVC的组成部分: 模型 (Model) 代表你的数据结构.通常来说,你的模型类将包含取出.插入.更新你的数据库资料这些功能. 视图 (View) 是展示给用户的信息.一个视图通常是一个网页. 控制器 (Controller) 是模型.视图以及其他任何处理 HTTP 请求所必须的资源之间的中介,并生成网页. 举例 比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. CI的特点: 简单:CodeIgniter是经过 Apache/BSD-

  • CI(CodeIgniter)框架中的增删改查操作

    CodeIgniter的数据函数类在 \system\database\DB_active_rec.php 复制代码 代码如下: <span style="font-size:16px;">class ModelName extends CI_Model {     function __construct()     {         parent::__construct();     } }</span> 连接数据库:$this->load->

  • CodeIgniter集成smarty的方法详解

    本文实例讲述了CodeIgniter集成smarty的方法.分享给大家供大家参考,具体步骤如下: 1.下载smarty 解压到ci的libraries目录 如: ci/application/libraries/Smarty-2.6.20 2.编写Mysmarty.php 自己的类库文件 代码如下: <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); require "Smarty-2.6.20/

  • Codeigniter(CI)框架分页函数及相关知识

    一般在数据分页的时候需要获取当前页的数据和总条数,一般人是在model中封装两个函数分别获取当前页的数据和数据总条数,业务逻辑类似,感觉有点冗余,可以封装在一起: 复制代码 代码如下: /**      * 获取分页数据及总条数      * @param string @tablename 表名      * @param mixed $where 条件      * @param int $limit 每页条数      * @param int $offset 当前页      */   

  • CodeIgniter中使用Smarty3基本配置

    一.创建Smarty类库 1.将smarty的libs文件复制到libraries下(这里我重命名为smarty) 2.新建Cismarty.php文件.(符合文件规范,文件名的首字母和class名的首字母大写,但是控制器引用加载时,类名/文件名不需要大写) Cismarty.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); require(APPPATH . 'libraries/smart

  • php之CodeIgniter学习笔记

    在使用数据库之前,我们最好将数据库进行自动连接:config/autoload.php自动加载 $autoload['libraries'] = array('database');一些常用函数 选择数据$this->db->select();允许你在SQL查询中写 SELECT 部分.$this->db->where();$this->db->or_where();$this->db->where_in();允许你在SQL查询中写 WHERE部分,其余各种

  • codeigniter集成ucenter1.6双向通信的解决办法

    用codeigniter开发一个子网站,之后想和原来的论坛进行同步,包括同步登陆和双向通信 先装好ucenter,然后新建一个other的应用,把生成的代码拷出来,新建一个config.ini.php到你的uc_client,ucenter会产生一个yourdomain.com/api/uc.php的请求,/api/uc.php不需要填写,要保证ucenter请求正确位置,才能做到双向通信 把uc_client复制到你的网站,目录可以自己定,就根目录吧.如果你把api目录放到uc_client目

随机推荐