CI集成Smarty的实现方式
给新伙伴的忠告:不要去想着有多复杂,看一遍绝对就会弄了!
这样集成的目的是什么?
因为我使用过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的实现方式的更多相关文章
- **【ci框架】PHP的CI框架集成Smarty的最佳方式
因为CI自带的模板功能不是很方便,所以大家普遍采用集成Smarty的方式来弥补CI这方面的不足. 本人在网上看了不少CI集成Smarty的教程,包括咱们CI论坛里面的一个精华帖子 http://cod ...
- Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目
在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...
- 星云测试插装编译流程与CI集成
星云测试Horn插装采用脚本配置方式自动对语法进行扫描和插装,在整个插装过程中需要用到星云提供的插件工具.通过与CI集成,在CI编译前通过jenkins调用星云插装插件模块进行必要的数据填充,生成对应 ...
- Atitit.你这些项目不都是模板吗?不是原创 集成和整合的方式大总结
Atitit.你这些项目不都是模板吗?不是原创 集成和整合的方式大总结 1.1. 乔布斯的名言:创新即整合(Creativity is just connecting things).1 1.2. ...
- Yii集成smarty说明
1. [在protected目录下建立文件夹vendor/smarty,把smarty的类包放入其中] 2. [在extensions目录下边建立文件CSmarty.php] ...
- CI集成phpunit Error: No code coverage driver is available 的解决
CI集成phpunit时,运行报No code coverage driver is available的错误,如下图: yanglingdeMacBook-Pro:tests yangling$ p ...
- CI集成 mesos 资源分配的思考, 待续
读了mesos的论文(https://people.eecs.berkeley.edu/~alig/papers/mesos.pdf ),感觉应用在 CI 上的资源管理很赞,能够解决 jenkins在 ...
- Jenkins+Git+Fastlane+Fir CI集成
上一篇有讲关于fastlane自动化部署,本篇将会着重讲关于fastlane的实际应用. 目标: 利用自动化jenkins打包工具,自动拉取git仓库代码 不需要通过手动检查修改xcode中项目配置修 ...
- 解析SparkStreaming和Kafka集成的两种方式
spark streaming是基于微批处理的流式计算引擎,通常是利用spark core或者spark core与spark sql一起来处理数据.在企业实时处理架构中,通常将spark strea ...
随机推荐
- 公众平台第三方平台 .NET开发
前言:本博客借鉴了很多三方内容整理的,参考博客:竹叶苿. 一.开发的目的(以下是引用官方的话) 公众平台第三方平台 是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可 ...
- S19格式
S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EE ...
- jdk提供的线程协调API suspend/resume wait/notify park/unpark
线程通信(如 线程执行先后顺序,获取某个线程执行的结果等)有多种方式: 文件共享 线程1 --写入--> 文件 < --读取-- 线程2 网络共享 变量共享 线程1 --写入--> ...
- PAT Basic 1056 组合数的和 (15 分)
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出:25.28.52.58.82.85 ...
- 《编译原理》LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析
<编译原理>LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析 笔记 直接做题是有一些特定步骤,有技巧.但也必须先了解一些基本概念,本篇会通过例题形式解释概念,会容易理解和记忆,以 ...
- JS 给数字加三位一逗号间隔的方法
1.方法 function format_number(n) { var b = parseInt(n).toString(); var len = b.length; ) { return b; } ...
- JVM的四种GC算法
程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运 ...
- 爱搞事情的webpack
webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler). 当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency g ...
- Object-C(自学1)
----- 需求索要 自学了下 OBJECt-C ----- 就基础部分一些 和操作 command + R 运行command +B 只编译.m文件 NSlog() = printfNSLog 是 ...
- 高并发下的 Nginx 优化与负载均衡
高并发下的 Nginx 优化 英文原文:Optimizing Nginx for High Traffic Loads 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. ...