用户
 找回密码
 入住 CI 中国社区
搜索
查看: 10596|回复: 14
收起左侧

[Web] CI集成Smarty

  [复制链接]
发表于 2010-8-19 21:02:51 | 显示全部楼层 |阅读模式
1, 把Smarty库放在ci库的libraries文件夹中,
2,在libraries里新建一个Smarty.php用来继承原生的Smarty类,代码如下:
PHP复制代码
 
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 require_once("Smarty/Smarty.class.php");
 /**
  * DK_Smarty extends Smarty
  * Author: Daker.W
  * Create Time: 2010/08/11
  **/

 class DK_Smarty extends Smarty
 {
  var $cache  = 0;
  var $debug  = false;
 
  function DK_Smarty($config = array())
  {
   $this->CI =& get_instance();
   
   if ( ! in_array('smarty_lang'.EXT, $this->CI->lang->is_loaded, TRUE))
   {
    $this->CI->lang->load('smarty');
   }
 
   $this->local_time = time();
   $this->initialize($config);
   log_message('debug', "Smarty Class Initialized");
  }
 
  function initialize($config = array(cache=>0, debug=>false))
  {
   foreach ($config as $key => $val)
   {
    if (isset($this->$key))
    {
     $this->$key = $val;
    }
   }
   $this->left_delimiter  = '<[url=mailto:!--{@]!--{@'[/url];
   $this->right_delimiter  = [url=mailto:]'@}-->'[/url];
   
   define('TPL_PATH', APPPATH.'templates'.DIRECTORY_SEPARATOR);
   $this->template_dir   = TPL_PATH;
   $this->compile_dir   = sprintf("%stemplates_c%s", APPPATH.DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR);
   $this->config_dir   = sprintf("%sconfig%s", APPPATH.DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR);
   $this->cache_dir   = sprintf("%scache%s", APPPATH.DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR);
   if(!is_dir($this->compile_dir)){
    mkdir($this->compile_dir, 0777);
   }
   if($this->caching && !is_dir($this->cache_dir)){
    mkdir($this->cache_dir, 0777);
   }
  }
 }//End Class
 
复制代码


最后目录结构如下
  -------system
  ----------libraries
  ------------Smarty
  ------------Smarty.php
3,控制器中调用
PHP复制代码
 
 class Testsmarty extends DK_Controller {
 
  function DK_Testsmarty()
  {
   parent::DK_Controller();
  }
 
  function index()
  {
   $this->load->library('smarty');
   $this->smarty->assign('test', 'wanggang');
   $this->smarty->display('test/testsmarty.html');
  }
 }
 
复制代码
发表于 2010-8-20 16:53:00 | 显示全部楼层
贴个图出来就更好了
发表于 2010-8-31 15:20:51 | 显示全部楼层
DK_Controller这个类哪来的
 楼主| 发表于 2010-9-1 15:22:19 | 显示全部楼层
回复 3# eason
自己扩展原生的Controller类, 你可以改为原生的类Controller
发表于 2010-9-4 13:28:05 | 显示全部楼层
搞不明白,为什么MVC模式了,还用模板技术有什么好处?高手指点!
 楼主| 发表于 2010-9-7 13:53:59 | 显示全部楼层
回复 5# superkamiu
smarty  也有view的性质, 个人比较喜欢smarty  我后台用ci的View  觉的代码量有点大.所以现在用smarty.
这是看喜欢怎么的VIEW书写
发表于 2010-9-7 23:05:10 | 显示全部楼层
smarty对美工比较友好,尤其纯美工
发表于 2010-9-26 09:54:53 | 显示全部楼层
$this->left_delimiter  = '<!--{@';
   $this->right_delimiter  = '@}-->';   这两行报错
 楼主| 发表于 2011-4-29 13:53:05 | 显示全部楼层
回复 8# mab741


    报什么错?贴出来。
    我一直使用,没有问题。
发表于 2012-7-23 14:58:20 | 显示全部楼层
看上去容易实现,得试试去。

本版积分规则