CodeIgniter中使用Smarty模板引擎

在CodeIgniter框架中,parser解析方式不是很完善,所以想换用smarty模版引擎。

方法如下:

1、下载smarty源码包,解压后将其中的lib文件夹复制到CI框架中的application/library/下面;

2、同时在该目录下建立一个Cismarty.php文件,文件内容如下:

View Code
 1 <?php 
 2  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 3 require_once( APPPATH . 'libraries/Smarty/Smarty.class.php' );
 4 /**
 5  * Smarty Class
 6  *
 7  * Lets you use smarty engine in CodeIgniter.
 8  *
 9  * @package        Application
10  * @subpackage    Libraries
11  * @category    Customize Class
12  * @author        sharexie
13  */
14 class Cismarty extends Smarty {
15 
16     var $CI;
17 
18     /**
19      * Smarty constructor
20      *
21      * The constructor runs the session routines automatically
22      * whenever the class is instantiated.
23      */
24     public function __construct()
25     {
26         parent::__construct();
27 
28         $this->CI =& get_instance();
29         $this->template_dir = APPPATH . 'views/';
30         $this->compile_dir = 'cache/templates_c/';
31         //$this->config_dir = $CI->config->item('configs_dir');
32         //$this->cache_dir = $CI->config->item('cache');
33         //$this->caching = true;
34         //$this->cache_lifetime = ;
35         //$this->debugging = true;
36         $this->left_delimiter = '{#';
37         $this->right_delimiter = '#}';
38     }
39 
40     // --------------------------------------------------------------------
41 
42     /**
43      * An encapsulation of display method in smarty class
44      *
45      * @access    public
46      * @param    string
47      * @param   mixed
48      * @return    void
49      */
50     public function view($template_file, $assigns = array())
51     {
52         if (strpos($template_file, '.') === false)
53         {
54             $template_file .= '.html';
55         }
56 
57         if ( ! is_file($this->template_dir . '/' . $template_file)) {
58             show_error("Smarty error: {$template_file} cannot be found.");
59         }
60 
61         if (is_array($assigns) && !empty($assigns))
62         {
63             foreach ($assigns as $key => $value)
64                 $this->assign($key, $value);
65         }
66 
67         $this->display($template_file);
68     }
69 }
70 /* End of file Smarty.php */
71 /* Location: ./application/libraries/Smarty.php */

//================================================================
配置完毕
//================================================================
使用方法:
在控制器中如:

View Code
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Test extends CI_Controller {

    /**
     * Test construtor
     */
    public function __construct()
    {
        parent::__construct();
                $this->load->library('smarty');
    }
        /**
     * Index Page for this controller.
     */
        public function index()
    {        
        $this->cismarty->view('test',array('title'=>'测试'));
    }
}

在视图中如:

View Code
 1 <html>
 2 <head>
 3     <title>{#$title#}</title>
 4 </head>
 5 <body>
 6 
 7 <p>work well</p>
 8 
 9 </body>
10 </html>
原文地址:https://www.cnblogs.com/fredshare/p/2445840.html