给新伙伴的忠告:不要去想着有多复杂,看一遍绝对就会弄了!

这样集成的目的是什么?

因为我使用过CI和smarty,所以我就按自己的理解讲一下:CI框架在控制器、models方面做的很好,但在多变的视图方面我感觉没有专门处理视图的smarty模板做的好,因此就想到了将这两者合并,各取其长。

1、下载CI框架、smarty模板,这个就不需要我多说了。

2、将smarty的libs文件夹copy到CI的third_party文件夹下(其实copy到哪个文件夹下是无所谓的,只要加载到它就行了),并更名为smarty;

3、在CI的根目录下创建一下文件夹:

还有,在CI的helpers文件夹下创建smartyPLU文件夹

4、在CI的配置文件夹config下创建smarty.php配置文件,并拷入以下代码:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

//指定相关的文件夹
$config['template_dir'] = APPPATH . 'views';
$config['compile_dir'] = FCPATH . 'templates_c';
$config['config_dir'] = FCPATH . 'configs';
$config['cache_dir'] = FCPATH . 'cache';
$config['plugins_dir'] = APPPATH . 'helpers/smartyPLU'; //$config['template_ext'] = ; //设置缓存,默认为false
$config['caching'] = false;
$config['cache_lifetime'] = 60; $config['auto_literal'] = false; $config['left_delimiter'] = '<{';
$config['right_delimiter'] = '}>';

5、在CI的libraries文件夹中创建CSmarty.php文件,并拷入以下代码:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

require_once(APPPATH.'third_party/smarty/Smarty.class.php');     //这里指定Smarty.class.php的存放位置

class CSmarty 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->compile_dir = $this->CI->config->item('compile_dir');
$this->config_dir = $this->CI->config->item('config_dir');
$this->cache_dir = $this->CI->config->item('cache_dir');
$this->plugins_dir = $this->CI->config->item('plugins_dir');
//$this->template_ext = $this->CI->config->item('template_ext'); $this->caching = $this->CI->config->item('caching');
$this->cache_lifetime = $this->CI->config->item('cache_lifetime'); $this->auto_literal = $this->CI->config->item('auto_literal'); $this->left_delimiter = $this->CI->config->item('left_delimiter');
$this->right_delimiter = $this->CI->config->item('right_delimiter'); //设置编码格式和时区
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set('UTC');
}
}

6、将smarty的启动加到CI的自启动文件autoload.php文件中:

$autoload['libraries'] = array('CSmarty');

7、接下来就是在CI中使用了,将CI中的通过$this->load->view("index",$data)方式加载视图改为smarty方式:

$this->csmarty->assign('data', $data);
$this->csmarty->display('index.html');

PS:使用了smarty的方式时,会出现一些路径上的问题。

CI集成Smarty的实现方式的更多相关文章

  1. **【ci框架】PHP的CI框架集成Smarty的最佳方式

    因为CI自带的模板功能不是很方便,所以大家普遍采用集成Smarty的方式来弥补CI这方面的不足. 本人在网上看了不少CI集成Smarty的教程,包括咱们CI论坛里面的一个精华帖子 http://cod ...

  2. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  3. 星云测试插装编译流程与CI集成

    星云测试Horn插装采用脚本配置方式自动对语法进行扫描和插装,在整个插装过程中需要用到星云提供的插件工具.通过与CI集成,在CI编译前通过jenkins调用星云插装插件模块进行必要的数据填充,生成对应 ...

  4. Atitit.你这些项目不都是模板吗?不是原创  集成和整合的方式大总结

    Atitit.你这些项目不都是模板吗?不是原创  集成和整合的方式大总结 1.1. 乔布斯的名言:创新即整合(Creativity is just connecting things).1 1.2. ...

  5. Yii集成smarty说明

    1.       [在protected目录下建立文件夹vendor/smarty,把smarty的类包放入其中] 2.       [在extensions目录下边建立文件CSmarty.php] ...

  6. CI集成phpunit Error: No code coverage driver is available 的解决

    CI集成phpunit时,运行报No code coverage driver is available的错误,如下图: yanglingdeMacBook-Pro:tests yangling$ p ...

  7. CI集成 mesos 资源分配的思考, 待续

    读了mesos的论文(https://people.eecs.berkeley.edu/~alig/papers/mesos.pdf ),感觉应用在 CI 上的资源管理很赞,能够解决 jenkins在 ...

  8. Jenkins+Git+Fastlane+Fir CI集成

    上一篇有讲关于fastlane自动化部署,本篇将会着重讲关于fastlane的实际应用. 目标: 利用自动化jenkins打包工具,自动拉取git仓库代码 不需要通过手动检查修改xcode中项目配置修 ...

  9. 解析SparkStreaming和Kafka集成的两种方式

    spark streaming是基于微批处理的流式计算引擎,通常是利用spark core或者spark core与spark sql一起来处理数据.在企业实时处理架构中,通常将spark strea ...

随机推荐

  1. 林大妈的CSS知识清单(二)可见格式化模型(内含margin塌陷与浮动闭合的解决方案)

    盒模型.浮动和定位是CSS中最重要的三个概念.它们共同决定了一个元素在页面中以怎样的形式进行排布与显示. 一.盒模型 1. 定义 盒模型是CSS的核心概念.一个页面中,所有的元素(不管他最终显示是圆形 ...

  2. mysql float 精度丢失

    mysql 中保存了字段 float s=0.3 直接执行sql 查出来是 0.3 但是JPA 执行查询结果是 0.2999 换成decimal 就可以

  3. yii2 response多次输出问题的查找

    { "IsSuccess": 1, "ErrMsg": "OK", "Data": { "IsSuccess& ...

  4. JavaJDBC【二、Mysql包加载与使用】

    连接数据库前提条件是: 1.加载mysql驱动 2.获取连接 加载驱动前需要将mysql的jar包引入项目 Demo: package JDBC; import java.sql.DriverMana ...

  5. Boost::pool (1)

    POOL 什么是pool 池分配是一种非常快速的内存分配方案,但其使用受到限制.有关池分配的更多信息(也称为简单隔离存储,请参阅 池化概念和简单隔离存储). 我为什么要使用Pool? 使用池可以更好地 ...

  6. Git学习笔记(2)-Eclipse中Git插件使用

    目前我使用的Eclipse luna版本中已经集成了git插件,这里就不介绍如何安装Git插件了,不懂可以看其他的博客. 上篇笔记介绍了Git的基本指令,实际开发中我基本都使用eclipse插件进行代 ...

  7. 如何设置zencart买满多少免运费?

    有时候会希望客户买满多少免运费,当订单总金额大于免运费的订单金额设值时,免运费.下面介绍一下zencart设置买满多少免运费: 1.进入后台–模块管理(Modules)–总额计算(Order Tota ...

  8. sql 178. 分数排名

    编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有“间隔”. +----+----- ...

  9. 第二章 Vue快速入门--8 v-bind指令的学习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  10. Eclipse里导入Mybatis源码工程

    打开Eclipse,在前两天的记录里我已经把Maven什么的都配置好了,还有Mybatis的源码也下载下来了,不相信的话可以去看一下我之前的记录:) OK. Mybatis源码解压之后是一个标准的Ma ...