ci smarty 整合

来源:互联网 发布:淘宝爽肤水有什么用 编辑:程序博客网 时间:2024/05/14 03:37
目前正在做一个小项目,选择Ci框架也是第一次使用,发现CI没有内置的模版引擎,传统的php、html混写有点不习惯咯被惯坏了,决定将smarty模版引擎整合到CI框架中。步骤如下:下载:ci,smarty配署ci 在这里就不多说了……1.将下载好的smarty包的lib文件上传到ci中的libraries 文件中,将取名称修改为smarty,在libraries文件新建cismarty.php文件,内容如下:if (!defined('BASEPATH')) exit("no direct script access allowd");//以下是加载smarty的类文件require_once(APPPATH.'libraries/smarty/Smarty.class.php');//定义cismarty类,继承smarty类class cismarty extends Smarty{//定义一个受保护的变量,    protected $ci;    function __construct(){        parent::__construct();//引用实例化CI,这里主要是将smarty的配置文件写到ci中,以方便程序管理        $this->ci = & get_instance();//加载ci的新建的smarty配置文件        $this->ci->load->config('smarty');        $this->cache_lifetime  = $this->ci->config->item('cache_lifetime');        $this->caching         = $this->ci->config->item('caching');        $this->template_dir    = $this->ci->config->item('template_dir');        $this->compile_dir     = $this->ci->config->item('compile_dir');        $this->cache_dir       = $this->ci->config->item('cache_dir');        $this->use_sub_dirs    = $this->ci->config->item('use_sub_dirs');        $this->left_delimiter  = $this->ci->config->item('left_delimiter');        $this->right_delimiter = $this->ci->config->item('right_delimiter');2.在config下新建smarty.php配置文件<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');$config['cache_lifetime']     =     30*24*3600; //更新周期$config['caching']             =     false;//是否使用缓存,项目在调试期间,不建议启用缓存$config['template_dir']        =     APPPATH.'views'; //设置模板目录$config['compile_dir']         =     APPPATH.'views/template_c'; //设置编译目录$config['cache_dir']         =     APPPATH.'views/cache';//缓存文件夹$config['use_sub_dirs']     =     true;   //子目录变量(是否在缓存文件夹中生成子目录)$config['left_delimiter']     =     '<{';$config['right_delimiter']     =     '}>';3.在CI里重载smarty的 assign 和 display方法在框架根目录下core/目录下新建控制器继承CI基类,MY_Controller<?php if (!defined('BASEPATH')) exit('No direct access allowed.');class MY_Controller extends CI_Controller {    public function __construct() {        parent::__construct();    }    public function assign($key,$val) {        $this->cismarty->assign($key,$val);    }    public function display($html) {        $this->cismarty->display($html);    }}4.修改Config文件下的autoload.php 自动加载类文件$autoload['libraries'] = array('cismarty');到此配置已完成.5.下面测试a.新建控制器admin_welcome.php//if (!define('BASEPATH')) exit('no direct script access allowed');class Admin_welcome extends MY_Controller{    function __construct(){        parent::__construct();    }    public function index(){        //$this->load->view('welcome_message');        $data['title'] = '标题';        $data['num'] = '123456789';        $this->cismarty->assign('data',$data); // 亦可        $this->cismarty->display('test.html'); // 亦可        //$this->display('test.html');    }}Views 下新建test.html<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title>smarty配置测试</title>    </head>    <body>    <{$data.title}>        </body>        </html>

0 0
原创粉丝点击