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>

你可能感兴趣的:(CodeIgniter)