CI version: 2.1.4 // The latest version at this time
Smarty version: Smarty-2.6.26 // Because I used this version before, in order to take care of my own usage habits, I did not use the latest Smaty version here. , everyone understands the expansion principle and can choose the Smatry version they want to use.
1. Download the Smarty source code package from the corresponding site; // I am using Smarty-2.6.26 here
2. Copy the libs folder in the source code package to the CI project In the libraries folder under the directory, rename it to Smarty-2.6.26; //
3. Create a new file Cismarty.php in the libraries folder of the project directory. The contents are as follows:
<?php if(!defined('BASEPATH')) EXIT('No direct script asscess allowed'); require_once( APPPATH . 'libraries/Smarty-2.6.26/libs/Smarty.class.php' ); class Cismarty extends Smarty { protected $ci; public function __construct(){ $this->ci = & get_instance(); $this->ci->load->config('smarty');//加载smarty的配置文件 //获取相关的配置项 $this->template_dir = $this->ci->config->item('template_dir'); $this->complie_dir = $this->ci->config->item('compile_dir'); $this->cache_dir = $this->ci->config->item('cache_dir'); $this->config_dir = $this->ci->config->item('config_dir'); $this->template_ext = $this->ci->config->item('template_ext'); $this->caching = $this->ci->config->item('caching'); $this->cache_lifetime = $this->ci->config->item('lefttime'); } }
4. Create a new file smarty.php in the config folder of the project directory. The contents are as follows:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $config['theme'] = 'default'; $config['template_dir'] = APPPATH . 'views'; $config['compile_dir'] = FCPATH . 'templates_c'; $config['cache_dir'] = FCPATH . 'cache'; $config['config_dir'] = FCPATH . 'configs'; $config['template_ext'] = '.html'; $config['caching'] = false; $config['lefttime'] = 60;
5. Create a new folder templates_c in the directory where the entry file is located. cache, configs;
6. Find the autoload.php file in the config directory under the project directory
Modify this item
$autoload['libraries'] = array('Cismarty');/ /The purpose is: let the system load automatically when it is running, without having to manually load it in the controller
7. Create a new file MY_Controller.php in the core folder of the project directory with the following content: // Extended core control class
<?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); } }
Configuration completed
------------------------ -------------------------------------------------- -------------------------------------------------- --------------------------
Usage method example:
In the controller, such as:
<?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'] = '123456789'; //$this->cismarty->assign('data',$data); // 亦可 $this->assign('data',$data); $this->assign('tmp','hello'); //$this->cismarty->display('test.html'); // 亦可 $this->display('test.html'); } }
Then in the view: the view folder is located under views in the project directory:
New file test.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{ $test.title}</title> // 原文是 <title>{$test['title']}</title>,是错误的写法,也有可能是Smarty版本的原因 <style type="text/css"> </style> </head> <body> {$test.num|md5} // 原文这里也写错了 <br> {$tmp} </body> </html>
This article address: http://www.php.cn /php-weizijiaocheng-377484.html
Come to PHP Chinese website to learn programming www.php.cn
The above is the detailed content of Using the universal template engine smarty in the CI framework. For more information, please follow other related articles on the PHP Chinese website!