Home > Article > Backend Development > Integration steps of smarty3 under CI framework (with code)
The content of this article is about the integration steps of smarty3 under the CI framework (with code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
1 Download smarty3 and place the libs file in the framework libraries directory and rename it to smarty
2 Create the Ci_smarty.php file under the libraries, the code is as follows
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); require_once(APPPATH.'libraries/smarty/Smarty.class.php'); //这里指定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->cache_lifetime =$this->ci->config->item('cache_lifetime'); $this->caching = $this->ci->config->item('caching'); $this->config_dir = $this->ci->config->item('config_dir'); $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'); } }
3 In Create smarty.php in the framework config directory, the code is as follows
<?php $config['cache_lifetime'] = 3600;//缓存失效 $config['caching'] = true;//开启缓存 $config['template_dir'] = APPPATH .'views'; $config['compile_dir'] = APPPATH .'views/template_c'; $config['cache_dir'] = APPPATH . 'views/cache'; $config['config_dir'] = APPPATH . 'views/config'; $config['use_sub_dirs'] = false; //子目录变量(是否在缓存文件夹中生成子目录) $config['left_delimiter'] = '{'; $config['right_delimiter'] = '}';
4 Automatically load ci_smarty
$autoload['libraries']=array('ci_smarty');
5 in the configuration file autoload.php in the extended parent class MY_Controller.php of the framework (if not, just core now Created below) Add the following code
/ * @param $key * @par * smarty assign */ public function assign($key,$val){ $this->cismarty->assign($key,$val); } /** * @param $html * smarty smarty display方法 */ public function display($html,$is_cache=false){ if(!$is_cache) { $this->ci_smarty->clearCache($html); } $this->ci_smarty->display($html);} /** * smarty清除所有缓存 * @author shangshikai */ public function clearAllCache(){ $this->ci_smarty->clearAllCache(); } /** * smarty 清除某个模板的缓存 * @author shangshikai */ public function clearCache($html){ $this->ci_smarty->clearCache($html); }
/** * @param $html * @return mixed * smarty判断该模板是否有缓存 */ public function isCached($html) { return $this->ci_smarty->isCached($html); }
6 Since caching is enabled in the configuration file smarty.php, but not all pages are suitable for caching, so when configuring the display method in MY_Controller, parameters should be added to clear the cache by default, which requires caching. The page only needs to pass the second parameter as true when calling the display method. After using the cache, if you do not need to cache locally, you can use the {nocache}{/nocache} tag package. If the tag is not cached, the method is to add nocache after the tag, such as {foreach $arr as $v nocache}
7 If the entire project does not use caching, you can remove the lines $config['cache_lifetime'] = 3600; $config['caching'] = true; in smarty.php, and remove the second line from the display method in MY_Controller. Parameters and related judgments
The above is the detailed content of Integration steps of smarty3 under CI framework (with code). For more information, please follow other related articles on the PHP Chinese website!