CodeIgniter(CI) 是一个小巧但功能强大的 PHP 框架,是一个简单而“优雅”的工具包,是进口的哦,但是他默认没有静态模板引擎,而smarty模板引擎是个非常优秀的模板引擎,拥有非常多的用户,许多开发者都熟悉他。这里就讲讲怎么在CI框架下添加smarty类,来使用smarty模板引擎。
1.下载smarty,官网:http://www.smarty.net/download.php
把smarty的函数库(libs文件夹)解压放到ci框架下的application文件夹下的libraries里,/applicaton/libraries/smarty/
2.在根目录下的index.php里加入下面一句:
define('APPNAME', 'application');
3.在smarty文件夹里建cache、templates_c、configs文件夹(模板引擎的放缓存的文件夹,也可以放在其他地方,但要注意下一步SmartyExtended.php里做相应的修改)
4.在/application/libraries/下建smarty类文件SmartyExtended.php
SmartyExtended.php(代码)
<!--p
if (!defined('BASEPATH')) exit('No direct script access allowed');
define('SMARTY_DIR', BASEPATH . '../' . APPNAME . '/libraries/smarty/');
require(SMARTY_DIR . 'Smarty.class.php');
class SmartyExtended extends Smarty {
var $CI;
var $lang_code;
/**
* Constructor
*
* Loads the smarty class
*
* @access public
*/
function SmartyExtended() {
if (!file_exists(BASEPATH . '../' . APPNAME . '/libraries/smarty/cache'))
{
mkdir(BASEPATH . '../' . APPNAME . '/libraries/smarty/cache', 0777);
}
$thi-->CI =& get_instance();
$this->lang_code = $this->CI->config->item('lang_code');
$this->template_dir = BASEPATH . '../' . APPNAME . '/views/';
$this->compile_dir = BASEPATH . '../' . APPNAME . '/libraries/smarty/templates_c/';
$this->config_dir = BASEPATH . '../' . APPNAME . '/libraries/smarty/configs/';
$this->cache_dir = BASEPATH . '../' . APPNAME . '/libraries/smarty/cache/';
$this->caching = true;
$this->force_compile = true;
log_message('debug', "SmartyExtended Class Initialized");
}
function view($template, $data='') {
if(trim($data)!='')
{
if(is_array($data))
{
foreach($data as $key=>$val)
{
$this->assign($key, $val);
}
}
}
$this->display($template . '.tpl'); //模板后缀名
}
}
?>
5.添加自动调用:
修改/application/config/下的autoload.php
$autoload['libraries'] = array('SmartyExtended');
6.调用:
在controller里使用下面方法调用就可以了。
$data = array();//initialize array
$data['test'] = ......;
$this->smartyextended->view('home', $data);
7.在模板里的调用方法参考smarty手册