CI框架整合smarty步骤详解

正文详细描述了CI框架整合smarty步骤。分享给我们供大家参谋,具体如下:

正文实例呈报了CodeIgniter集成smarty的措施。分享给大家供我们参考,具体步骤如下:

正文实例汇报了CodeIgniter整合斯马特y的方法。分享给我们供大家仿照效法,具体如下:

本文实例陈诉了CI框架集成斯玛特y的诀窍。分享给大家供我们参谋,具体如下:

Ci结合smarty的安排步骤:

1.下载smarty

CI3.0.2宣布后认为到模板类依旧有一点好用,何况不可能编写翻译。斯Matty效用强大,用习贯了斯Matty标签,一般难以割舍,何况,是能够编写翻译文件举办,速度快,大家得以把它们组成应用,弥补CI的沙盘成效的阙如。大家结合利用的是CI版本3.0.3及
斯马特y版本3.1.27。下边描述整合进度。

因为CI自带的沙盘成效不是很便利,所以我们常见接纳集成斯马特y的点子来弥补CI那地点的不足。

  1. 第一步配置ci和下载smarty的沙盘个人喜好用(Smarty-3.1.8)那些本子。

解压到ci的libraries目录 如:

1、下载smarty-3.1.27

本身在网络看了数不清CI集成斯Matty的教程,包罗我们CI论坛里面包车型大巴贰个卓越帖子

2.
次之部把下载到的smarty版本解压然后把在这之中的libs文件改名叫smarty然后把那一个文件拷到ci\application\libraries目录上边

ci/application/libraries/Smarty-2.6.20

2
、解压smarty-3.1.27到CI项目中的application\libraries下面,别的的公文删除。

3.
在ci\application\libraries这一个目录下边建设构造二个文本,文件名能够自定义,比方见三个tp.php的文书档案。

2.编辑Mysmarty.php 自身的类库文件

3、 在application\libraries目录下创立Ci_smarty.php文件,代码如下:

和煦对待了眨眼间间那几个科目,作者感到下边这一个方案是具有里面最卓越的,猛烈推荐给大家(当然也是作者要好使用的方案)

  1. 用编写翻译器展开tp.php然后写入以下代码:

代码如下:

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require(APPPATH.'libraries/smarty-3.1.27/libs/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');
 }
}

出处:

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once('smarty/smarty.class.php');
class Tp extends Smarty{
 function tp(){
  parent::Smarty();
  $this->template_dir = APPPATH.'views';
  $this->compile_dir = APPPATH.'templates_c/';
  $this->left_delimiter = '<{';
  $this->right_delimiter = '}>';
 }
}
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
require "Smarty-2.6.20/libs/Smarty.class.php";
/**
* @file system/application/libraries/Mysmarty.php
*/
class Mysmarty extends Smarty
{
  function Mysmarty()
  {
    $this->Smarty();
    $config =& get_config();
    // absolute path prevents "template not found" errors
    $this->template_dir = (!empty($config['smarty_template_dir']) ? $config['smarty_template_dir'] : BASEPATH . 'application/views/');
    $this->compile_dir = (!empty($config['smarty_compile_dir']) ? $config['smarty_compile_dir'] : BASEPATH . 'cache/'); 
    //use CI's cache folder
    if (function_exists('site_url')) {
      // URL helper required
      $this->assign("site_url", site_url()); // so we can get the full path to CI easily
    }
  }
  /**
  * @param $resource_name string
  * @param $params array holds params that will be passed to the template
  * @desc loads the template
  */
  function view($resource_name, $params = array())  {
    if (strpos($resource_name, '.') === false) {
      $resource_name .= '.html';
    }
    if (is_array($params) && count($params)) {
      foreach ($params as $key => $value) {
        $this->assign($key, $value);
      }
    }
    // check if the template file exists.
    if (!is_file($this->template_dir . $resource_name)) {
      show_error("template: [$resource_name] cannot be found.");
    }
    return parent::display($resource_name);
  }
} // END class smarty_library
?>

4、在application\config目录下创办布局文件smarty.php,代码如下:

  1. 在创制贰个ci\application\templates_c文件夹

  2. 打开ci\application\config\autoload.php文件把

3.在autoload.php让ci自动加载smarty

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['cache_lifetime'] = 60;
$config['caching'] = false;
$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'] = '}';

原著里面包车型客车一部分错误,作者在本文里面已经做了纠正

$autoload['libraries'] = array();
$autoload['libraries'] = array('database', 'mysmarty');

5、在application\core创建MY_controller.php,代码如下:

上边说下自身认为它尤其雅观的因由,比较下这么些方案和我们论坛的方案,你会意识,那个方案多了好几便是它扩大了骨干类,

改成:

抑或 使用模板时再自身加载smarty

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);
 }
}

它将斯马特y类方法assign和display扩大到Ci的调节器中,所以大家在CI中动用斯马特y的时候能够像这么使用:

发表评论

电子邮件地址不会被公开。 必填项已用*标注