須要用ci來寫一個後臺配置smarty,在網絡上可以找到一些相關的文章.可是都是比較舊的內容,大部分是smary2.*
的配置方法.按照這個配置後會出現一些錯誤.其實配置看smary官方會比較簡單.php
在php中使用smarty的用法html
require_once('Smarty.class.php'); $smarty = new Smarty();
這裏就能夠使用對象$smarty
的assign和display對象來解析模板.在ci裏面使用時爲了在controller裏面來使用這兩個函數.網絡
smarty裏面有4個須要配置的項app
$smarty->setTemplateDir( ...); $smarty->setCompileDir(... ); $smarty->setConfigDir( ...); $smarty->setCacheDir(... );
那麼咱們在ci的config裏面建立一個smarty.php的文件,並加入4個變量.其中APPPATH
的值爲application目錄.建立'templates_c',其餘三個文件夾ci裏面都存在.函數
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $config['template_dir'] = APPPATH . 'views'; $config['compile_dir'] = APPPATH . 'templates_c'; $config['cache_dir'] = APPPATH . 'cache'; $config['config_dir'] = APPPATH . 'config';
首先將smarty的lib目錄複製到ci的libraries目錄,並更名爲smarty.在libraries裏面建立一個ci_smarty.php
的文件.這裏主要是加載配置文件等.ui
<?php if(!defined('BASEPATH')) EXIT('No direct script asscess allowed'); require_once( APPPATH . 'libraries/smarty/Smarty.class.php' ); class Ci_smarty extends Smarty { protected $ci; public function __construct(){ parent::__construct(); $this->ci = & get_instance(); $this->ci->load->config('smarty');//加載smarty的配置文件 //獲取相關的配置項 // $this->template_dir= .. ;這是2.*的方法,3.1以後修改成 getXXX setXXX $this->setTemplateDir($this->ci->config->item('template_dir')); $this->setCompileDir($this->ci->config->item('compile_dir')); $this->setCacheDir($this->ci->config->item('cache_dir')); $this->setConfigDir($this->ci->config->item('config_dir')); } }
而後在config/autoload.php裏面設置自動加載Ci_smartythis
$autoload['libraries'] = array('ci_smarty');
在core
文件夾添加一個My_Controller.php
的自定義控制器.將smarty的assign和display兩個函數添加進入.code
<?php if(!defined('BASEPATH')) EXIT('No direct script asscess allowed'); class MY_Controller extends CI_Controller { public function __construct() { parent::__construct(); } public function assign($key,$val) { $this->ci_smarty->assign($key,$val); } public function display($html) { $this->ci_smarty->display($html); } }
將控制器繼承自My_Controller就能夠使用這兩個函數了.htm
控制器繼承須要修改成My_Controller對象
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends My_Controller { public function index() { //$this->load->view('welcome_message'); $data["title"]="標題"; $data["num"]="123123"; $this->assign('data',$data); $this->display("index.html"); } }
view文件夾中的index.html文件
<html> <head> <title>{$data.title}</title> </head> <body> <p>{$data.num}</p> </body> </html>