CI集成Smarty的實現方式

給新夥伴的忠告:不要去想着有多複雜,看一遍絕對就會弄了!php

這樣集成的目的是什麼?html

由於我使用過CI和smarty,因此我就按本身的理解講一下:CI框架在控制器、models方面作的很好,但在多變的視圖方面我感受沒有專門處理視圖的smarty模板作的好,所以就想到了將這二者合併,各取其長。緩存

一、下載CI框架、smarty模板,這個就不須要我多說了。框架

二、將smarty的libs文件夾copy到CI的third_party文件夾下(其實copy到哪一個文件夾下是無所謂的,只要加載到它就好了),並改名爲smarty;ui

三、在CI的根目錄下建立一下文件夾:this

    還有,在CI的helpers文件夾下建立smartyPLU文件夾編碼

四、在CI的配置文件夾config下建立smarty.php配置文件,並拷入如下代碼:spa

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

//指定相關的文件夾
$config['template_dir']    = APPPATH . 'views';
$config['compile_dir']     = FCPATH . 'templates_c';
$config['config_dir']      = FCPATH . 'configs';
$config['cache_dir']       = FCPATH . 'cache';
$config['plugins_dir']     = APPPATH . 'helpers/smartyPLU';

//$config['template_ext']    = ;

//設置緩存,默認爲false
$config['caching']         = false;
$config['cache_lifetime']  = 60;

$config['auto_literal']    = false;

$config['left_delimiter']  = '<{';
$config['right_delimiter'] = '}>';

五、在CI的libraries文件夾中建立CSmarty.php文件,並拷入如下代碼:htm

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

require_once(APPPATH.'third_party/smarty/Smarty.class.php');     //這裏指定Smarty.class.php的存放位置

class CSmarty extends Smarty
{

	protected $CI;

	public function __construct(){

		$this->CI = & get_instance();
		$this->CI->load->config('smarty');       //這裏加載smarty的配置信息的文件

		//相關配置項
		$this->template_dir    = $this->CI->config->item('template_dir');
		$this->compile_dir     = $this->CI->config->item('compile_dir');
		$this->config_dir      = $this->CI->config->item('config_dir');
		$this->cache_dir       = $this->CI->config->item('cache_dir');
		$this->plugins_dir     = $this->CI->config->item('plugins_dir');
		//$this->template_ext   = $this->CI->config->item('template_ext');

		$this->caching         = $this->CI->config->item('caching');
		$this->cache_lifetime  = $this->CI->config->item('cache_lifetime');

		$this->auto_literal    = $this->CI->config->item('auto_literal');

        $this->left_delimiter  = $this->CI->config->item('left_delimiter');
        $this->right_delimiter = $this->CI->config->item('right_delimiter');

        //設置編碼格式和時區
        header("Content-type:text/html;charset=utf-8");
        date_default_timezone_set('UTC');
	}
}

 六、將smarty的啓動加到CI的自啓動文件autoload.php文件中:blog

$autoload['libraries'] = array('CSmarty');

 七、接下來就是在CI中使用了,將CI中的經過$this->load->view("index",$data)方式加載視圖改成smarty方式:

$this->csmarty->assign('data', $data);
$this->csmarty->display('index.html');

 PS:使用了smarty的方式時,會出現一些路徑上的問題。

相關文章
相關標籤/搜索