給新夥伴的忠告:不要去想着有多複雜,看一遍絕對就會弄了!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的方式時,會出現一些路徑上的問題。