将smarty模版引擎整合到CI框架中

时间:2021-11-11 19:57:29

                将smarty模版引擎整合到CI框架中。  

  

  1. 下载:ci,smarty  
  2. 配署ci 在这里就不多说了……  
  3. 1.  将下载好的smarty包的lib文件上传到ci中的application/libraries 文件中,将取名称修改为smarty,在libraries文件新建cismarty.php文件,内容如下:
  4.   
  5. if (!defined('BASEPATH')) exit("no direct script access allowd");  
  6. //以下是加载smarty的类文件  
  7. require_once(APPPATH.'libraries/smarty/Smarty.class.php');  
  8. //定义cismarty类,继承smarty类  
  9. class cismarty extends Smarty{  
  10. //定义一个受保护的变量,  
  11. protected $ci;  
  12. function __construct(){  
  13.         parent::__construct();  
  14. //引用实例化CI,这里主要是将smarty的配置文件写到ci中,以方便程序管理  
  15. $this->ci = & get_instance();  
  16. //加载ci的新建的smarty配置文件  
  17. $this->ci->load->config('smarty');  
  18. $this->cache_lifetime  = $this->ci->config->item('cache_lifetime');  
  19. $this->caching         = $this->ci->config->item('caching');  
  20. $this->template_dir    = $this->ci->config->item('template_dir');  
  21. $this->compile_dir     = $this->ci->config->item('compile_dir');  
  22. $this->cache_dir       = $this->ci->config->item('cache_dir');  
  23. $this->use_sub_dirs    = $this->ci->config->item('use_sub_dirs');  
  24. $this->left_delimiter  = $this->ci->config->item('left_delimiter');  
  25. $this->right_delimiter = $this->ci->config->item('right_delimiter');  
  26.   }
  27. }
  28. ?>
  29. 2.  在config下新建smarty.php配置文件  
  30. <?php  
  31. if ( ! defined('BASEPATH')) exit('No direct script access allowed');  
  32. $config['cache_lifetime']     =     30*24*3600; //更新周期  
  33. $config['caching']             =     false;//是否使用缓存,项目在调试期间,不建议启用缓存  
  34. $config['template_dir']        =     APPPATH.'views'; //设置模板目录  
  35. $config['compile_dir']         =     APPPATH.'views/template_c'; //设置编译目录  
  36. $config['cache_dir']         =     APPPATH.'views/cache';//缓存文件夹  
  37. $config['use_sub_dirs']     =     true;   //子目录变量(是否在缓存文件夹中生成子目录)  
  38. $config['left_delimiter']     =     '<{';  
  39. $config['right_delimiter']     =     '}>';  
  40. ?>
  41. 3.  在CI里重载smarty的 assign 和 display方法  
  42. 在框架根目录下core/目录下新建控制器继承CI基类,MY_Controller  
  43. <?php
  44.  if (!defined('BASEPATH')) exit('No direct access allowed.');  
  45. class MY_Controller extends CI_Controller {  
  46. public function __construct() {  
  47.         parent::__construct();  
  48.     }  
  49. public function assign($key,$val) {  
  50. $this->cismarty->assign($key,$val);  
  51.     }  
  52. public function display($html) {  
  53. $this->cismarty->display($html);  
  54.     }  
  55. }  
  56. 4.  修改Config文件下的autoload.php 自动加载类文件  
  57. $autoload['libraries'] = array('cismarty');  
  58. 到此配置已完成.  
  59. 5.  下面测试  
  60. a.  新建控制器admin_welcome.php  
  61. //if (!define('BASEPATH')) exit('no direct script access allowed');  
  62. class Admin_welcome extends MY_Controller{  
  63. function __construct(){  
  64.         parent::__construct();  
  65.     }  
  66. public function index(){  
  67. //$this->load->view('welcome_message');  
  68. $data['title'] = '标题';  
  69. $data['num'] = '123456789';  
  70. $this->cismarty->assign('data',$data); // 亦可  
  71. $this->cismarty->display('test.html'); // 亦可  
  72. //$this->display('test.html');  
  73.     }  
  74. }  
  75. Views 下新建test.html  
  76. <!DOCTYPE html>  
  77. <html xmlns="http://www.w3.org/1999/xhtml">  
  78. <head>  
  79. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  80.     <title>smarty配置测试</title>  
  81.     </head>  
  82.     <body>  
  83.     <{$data.title}>  
  84.         </body>  
  85.         </html>